2013-03-12 76 views
0

我有3組數據如下圖所示:查找每個最大值設置

A=[3 1 4 2;7 9 8 3;7 5 3 6;4 1 9 3] 

B=[1 0 4 5;7 7 1 3;4 7 6 5;2 2 1 9] 

C=[9 1 3 7;9 6 5 5;1 4 3 2;0 3 2 1] 

我需要找出最大值相互比較時。 例如,用於從每個組, A = 3,B = 1,C = 9,矩陣[1×1]因此最大數目是9

爲矩陣[1×2],最大值= 1等..

所以

final result =[9 1 4 7;9 9 8 5;7 7 6 6;4 3 9 9] 

任何建議來解決這個問題?謝謝!

回答

5

您可以使用max。對於3點矩陣的情況下,只需要使用

max(A, max(B, C)) 

如果你有超過三個矩陣,寫那些max聲明可以得到累人,所以你會以最大

max(cat(3, A, B, C, D, E), [], 3) 
0

你可以這樣做:

A=[3 1 4 2;7 9 8 3;7 5 3 6;4 1 9 3]; 
A = reshape(A,[1,numel(A)]); 
B=[1 0 4 5;7 7 1 3;4 7 6 5;2 2 1 9] ; 
B = reshape(B,[1,numel(B)]); 
C=[9 1 3 7;9 6 5 5;1 4 3 2;0 3 2 1]; 
C = reshape(C,[1,numel(C)]); 
D = [A;B;C]; 
for ii = 1:size(D,2) 
    res(1,ii) = max(D(:,ii)); 
end 
res = reshape(res,[4,4]); 
+1

這是以前沒有使用cat在Matlab中完全沒有辦法。一些評論:'A =重塑(A,[1,numel(A)])與'A = A(:)'是一樣的。你的整個for循環與'res = max(D,[],2)'或者'res = max(D')'相同。對於這種基本計算的循環,在Matlab中非常不鼓勵。看看H.Musters的答案,看看解決這個問題的最佳方式。 – Dan 2013-03-12 09:31:32

+0

@Dan儘管我同意你的觀點,但我認爲這個答案不值得贊同(畢竟它確實會產生一個正確的結果)。也許它也不值得讚揚,因爲它使解決方案過於複雜。 – 2013-03-12 11:33:18

+0

@EitanT太遲了,我不幸遺失。我低估了,因爲我覺得它誤導了讀者遠離一些最基本的Matlab範例,所以它是不必要的混淆。 – Dan 2013-03-12 11:45:15