0

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(:));

mask は論理行列であり、簡単にするために 1 だけを含めることができます。

どんな助けでも大歓迎です!ありがとうジャスパー

4

1 に答える 1

1

やってみました

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

マスクがある場合は、一時変数を使用できます

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

PS matlab の変数名としてand
を使用しないことをお勧めしますij

于 2013-03-21T14:56:50.077 に答える