現在、平均値を計算するためにネストされた 'for'ループを使用しています。これは3527 * 256ピクセルの画像で、各ピクセルには448の値が含まれています。私はこれらの448の値に 'modis_rsr'(448 * 8)という配列を掛けて、ゼロと正の値だけを合計したいと思います。その後、この和をhyp_1nmの正の値を持つものだけに対応する 'modis_rsr'の値の合計で除算したいと思います。'for'ループを条件付きの行列乗算に変換する
予想通り、このシーケンスは時間がかかりすぎるため、行列乗算を使用して処理を高速化したいと考えています。私が行う方法がわからない唯一のことは、 'modis_rsr'の条件付き合計を含めることです。私は負のもののインデックスを格納するために参照配列を作成することを考えていました。しかし、それはまた、計算集約的なようです。
for j = 1:8
for k = 1:256
for i = 1:3527
RLs = 0;
for jj = 1:448
if hyp_1nm(i,jj,k)>= 0
RLi = hyp_1nm(i,jj,k)*modis_rsr(jj,j);
RLs = RLs + RLi;
temp_rsr(jj,j) = modis_rsr(jj,j);
else
temp_rsr(jj,j) = 0;
end
end
Rs = sum(temp_rsr(1:448,j));
% Write basr
basr(i,j,k) = RLs/Rs;
end
end
end
各ピクセルに448の値が含まれていると言うと、3527 * 256 * 448サイズのe 3次元行列があることを意味します。右?あなたが返信すると、私はあなたを助けることができるかもしれません。 簡単にするために、コードを読む人(自分自身を含む)を混乱させる変数名は使用しないでください。 jjを使用する代わりに、別の文字または単語を使用します。 –
こんにちはTayyib、返事をありがとう。うん、それは3D配列です。悪い変数名を残して申し訳ありません。 –