0
假設在MATLAB中我有一個真正的矩陣A
這是n x m
和相同大小的二進制矩陣B
。後面的矩陣定義了優化集合(B
的元素等於1的所有索引):在此集合上,我想找到A的最大元素。我該怎麼做?最大的數組子集(MATLAB)
我的第一個想法是我認爲C = A.*B
並尋找最大的元素C
。這適用於至少有一個正數元素的所有矩陣A
,但它對於所有負元素的矩陣不起作用。
假設在MATLAB中我有一個真正的矩陣A
這是n x m
和相同大小的二進制矩陣B
。後面的矩陣定義了優化集合(B
的元素等於1的所有索引):在此集合上,我想找到A的最大元素。我該怎麼做?最大的數組子集(MATLAB)
我的第一個想法是我認爲C = A.*B
並尋找最大的元素C
。這適用於至少有一個正數元素的所有矩陣A
,但它對於所有負元素的矩陣不起作用。
你可以做
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);
謝謝,但我感興趣的是元素,而不是本身的價值。是否有可能更新你的解決方案? – Ilya
「元素」 - 你的意思是索引?我已經更新了我的答案... – Floris
謝謝,我會試試這個 – Ilya