2013-03-21 280 views
0

我在MATLAB中進行編程,希望儘可能高效地編寫我的代碼。 但我遇到了一個問題。MATLAB將3D矩陣的高度向量評估爲2D矩陣

我有一個3D矩陣(行,列,heigth) 和2D矩陣(行,列)

我想保存在2D矩陣的相應的單元的高度列的最大值。這可以通過for-loop來完成。

for i=1:row 
    for j=1:column 
     2D(i,j)=nanmax(3D(i,j,:)); 
    end 
end 

但是還有其他方法嗎?例如:

2D(mask)=3D(mask,nanmax(:)); 

掩碼是一個邏輯矩陣,可能只是包含一些使其更容易。

任何幫助將不勝感激! 感謝 碧玉

回答

1

你試過

twoD = nanmax(threeD, [], 3); 

如果你有一個面具,你可以使用一個時間變量

tmp = nanmax(threeD, [], 3); 
twoD(mask) = tmp(mask); 

PS
It is best not to use i and j as variable names in matlab

+0

不,我會盡力它現在。 []正確地做了什麼? 非常感謝您的回覆如此之快! – 2013-03-21 14:57:47

+0

@ jasper.l參見doc:http://www.mathworks.com/help/stats/nanmax.html,第三個用例。 – Shai 2013-03-21 14:59:56

+0

工程就像一個魅力。感謝您的解決方案和提示! – 2013-03-21 15:01:07