我正在使用MATLAB进行编程,并希望尽可能提高代码效率。 但我遇到了一个问题。
我有一个3D矩阵(行,列,高度) 和2D矩阵(行,列)
我想将高度列的最大值保存在2D矩阵的相应单元格中。这可以通过for循环来完成。
for i=1:row
for j=1:column
2D(i,j)=nanmax(3D(i,j,:));
end
end
但还有其他方法吗?类似的东西:
2D(mask)=3D(mask,nanmax(:));
掩码是一个逻辑矩阵,可能只包含一个以使其更容易。
任何帮助将不胜感激! 谢谢 碧玉
答案 0 :(得分: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