2014-02-16 125 views
0

我必須爲調用其他幾個函數的特定函數運行大量的迭代(10^6)。由於代碼有兩部分,所以它調用的函數之一是具有switch case語句。我顯然不希望提示10^6次,有沒有辦法讓我在第1次迭代中得到提示,並根據該選擇繼續進行其餘的迭代?或者還有其他辦法可以解決這個問題嗎?開關語句問題(Matlab)

謝謝你, 喬喬

+0

我不明白這個問題。爲什麼不傳遞一個在初始化期間確定的參數?你能添加一些解釋你的問題的代碼嗎? – Daniel

+0

您可以將響應保存到文件並在每次迭代中加載它。沒有顯示你的代碼,沒有太多的繼續。 – LeonardBlunderbuss

+1

哪個提示會出現? –

回答

1

你在做什麼在這裏可能是一個設計問題,你可能能夠解決不同。在呼叫層次內部深入提示參數/選項似乎是錯誤的。不管怎麼說回答你的問題,你能有這樣的參數,讓我們稱之爲乘數f的是,內部功能的persistent變量:

function c = dosomething(a, b) 
    persistent f; 
    while isempty(f) 
     f = input('enter multiplier: '); 
    end 
    c = f * a + b; 

在這個例子中,f將是空[]首次dosomething被調用。在這種情況下,用戶將被提示輸入一個值。在隨後的調用中,f仍將具有此值(由於聲明者persistent),並且不會再提示用戶。

A 好得多解決方案可能是讓外部函數將參數傳遞給dosomething(a, b, f);,所以外部函數可能是提示用戶的函數。

+0

謝謝s.bandara。 – Jojo