このfor
のループをMATLABの1つのコマンドでどのように置き換えることができるかについて、ここ3Dマトリックス2D行列を使用したインデックス作成
for i = 1 : size(w,3)
x=w(:,:,i);
w1(i,:)=x(B(i),:);
end
clear x
は、w
は、3D(x by y by z
)行列及びB(1 by z
)はw
の各レイヤの行を含むベクターです。このfor
のループは、wが500000
の深さのときに約150秒かかる。私は、これはサイズ500000 X 2 X 500000
の行列Q
を作成し、MATLABがバウンド外のメモリを言って私にエラーを投げた、使用して
Q = w(B,:,:);
Q = reshape(Q(1,:),[500000,2])';
を試してみました。どんな助けもありがとう!
私の答えはあなたのために機能しましたか?はいの場合は、それを合格とマークしてください。 –