【发布时间】:2017-05-18 12:34:05
【问题描述】:
谁能解释一下这个for循环如何被MATLAB中的单个命令替换?
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 中的每一层相关的行。当 w 为 500000 层深时,此 for 循环执行大约需要 150 秒。我试过用,
Q = w(B,:,:);
Q = reshape(Q(1,:),[500000,2])';
这会创建一个大小为 500000 X 2 X 500000 的矩阵 Q,而 MATLAB 向我抛出了一个错误,提示内存超出范围。任何帮助将不胜感激!
【问题讨论】:
标签: matlab matrix multidimensional-array