2014-02-10 62 views
0

假設在MATLAB中我有一個真正的矩陣A這是n x m和相同大小的二進制矩陣B。後面的矩陣定義了優化集合(B的元素等於1的所有索引):在此集合上,我想找到A的最大元素。我該怎麼做?最大的數組子集(MATLAB)

我的第一個想法是我認爲C = A.*B並尋找最大的元素C。這適用於至少有一個正數元素的所有矩陣A,但它對於所有負元素的矩陣不起作用。

回答

2

你可以做

C = A(B==1); 

給你只是對應於B.值1和

max(C) 

會給你的最大值A的值的數組其中B是1

使用此方法,當A的所有值都爲負數時,由於零中不出現零,因此不會遇到問題。

很明顯,你可以凝聚這

desiredValue = max(A(B(:)==1)); 

我使用冒號運算符,以確保的A(B(:)==1)結果是列向量 - 如果B是所有的人,我不知道,如果Matlab的將返回一個載體或一個nxm矩陣(我現在不能確認)。

更新來獲取值的指數,你可以這樣做:

f = find(B==1); 
[m mi] = max(A(f)); 
maxIndex = f(mi); 

而要拿到回2D元素:

[i j] = ind2sub(size(A), maxIndex); 
+0

謝謝,但我感興趣的是元素,而不是本身的價值。是否有可能更新你的解決方案? – Ilya

+0

「元素」 - 你的意思是索引?我已經更新了我的答案... – Floris

+0

謝謝,我會試試這個 – Ilya