これは前の質問hereからの拡張質問です。私は以下のコードに従ってデータを再構成しています。しかし、データサイズが増加すると、in=rand(291081,1920);
、前回の質問の回答(事前割り当て)はそれ以上処理できなくなり、MATLABはラップトップ全体をフリーズしました。したがって、最後の質問でTeddyが提案したように、私はループのパフォーマンスを向上させる新しい質問を開きます。膨大な量のデータを再構成する際のブーストループのパフォーマンス
いくつかの全く同じですが、似ていない質問はhereです。そこから、与えられた答えは、ループを列方向に変更することを提案しました。しかし、私のループは行と列に同時にアクセスする必要があるので、答えは私の場合は適用されないようです。
パフォーマンスを向上させるためにこのループを変更することはできますか?または、このループはラップトップ全体をフリーズすることなく行うことができますか?可能であれば、GPUに関係なく。
in=rand(291081,1920);
m=581;
[R,C]=size(in);
R_out=R/m;
out=zeros(m*C,R_out);
for k=1:m %from row 1 to nth row
for i=1:C %reshape every column of nth row
out(i+C*(k-1),:) = in(k:m:end,i)';
end
end
P/S:データサイズが大きくなって前の質問では、ループとarrayfun
は、大きなパフォーマンスの違いを持っていないように見えます。
ありがとうございます!