这是来自上一个问题here的扩展问题。我正在根据下面的代码重塑数据。但是,当数据量增加时,上一个问题中的答案(预分配)不能再处理了,MATLAB甚至冻结了整个笔记本电脑。因此,正如泰迪在最后一个问题中提出的那样,我提出了一个新问题来提高循环的性能。重塑海量数据时提升循环性能
可以找到一些非常相似但不相似的问题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
似乎没有大的性能差异。
在此先感谢!