2015-04-23 54 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)