2017-05-30 35 views

回答

4

說你有An片(這裏我只是10由每片10,但是這是可以改變到任何尺寸):

A = rand(10,10,n); 

你可以把它重塑到n列矩陣,則取最大值的每一列的:

[val,ind] = max(reshape(A,[],n),[],1); 

第一輸出val將與所有的最大值的n元向量,並且所述第二輸出ind將在重塑A其行索引。

然後你得到的分片尺寸:

sz = size(A); 

,並用它來尋找每個切片行(r),每個最大元素的列(c):

[r,c] = ind2sub(sz(1:2),ind) 

所以在這個例子中(對於A使用rand和10x10x6數組),最後會得到類似的結果(但是值不同):

val = 
     0.99861  0.98895  0.98681  0.99991  0.96057  0.99176 
r = 
    9  7  3  8  2  9 
c = 
    1  1  8 10 10  5 
+0

的最佳解決方案 - 無論是最大值和索引恢復時不使用for循環。謝謝! –

0

如果你有n層的矩陣A,就可以申請max功能分兩步獲得1×1 XN矩陣,最大每一層的

A = rand(10,10,n); 
layer_max = max(max(A,[],1),[],2); % 1 x 1 x n matrix, use squeeze to remove extra dims 
layer_max = squeeze(layer_max); 
相關問題