2013-03-21 241 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