2015-04-23 52 views
0

假設我們有30個變量,我正在尋找一種方法來找到哪個值保持最大值。我需要'名字',而不是它的價值。 例如:找到'名稱'不是變量的值保存最大值matlab

I1=10 
I2=12 
I3=14 
I4=90 
I5=5 
I6=90 

我如何編寫一個函數的返回 'I4' 和 'I5'。不返回只有90.

一種方法是先找到最大值,然後通過比較每個變量我們可以找出變量的名稱。但是,如果我們有很多變數,這是無效的。任何人有想法?提前致謝。

+5

不要使用不同的變量。使用矢量'I = [10 12 14 90 5 90]'。然後'index = find(I == max(I))'會給你'[4 6]' –

+0

爲什麼不用一個單獨的向量呢? –

+0

請使用矢量圖。 「我(1)」比「I1」更容易使用。 – beaker

回答

1

這是更好的使用cell陣列爲這樣的事情,但無論如何,你可以做這樣的事情:

names = who('-regexp', 'I[0-9]+'); 
values = cellfun(@eval, names); 
maxValue = max(values); 
maxNames = names(values == maxValue)