我需要以下代表性代码部分中的“for”循环尽可能高效地运行。代码中的 mean 函数充当了我自己函数的代表占位符。
x = linspace(-1,1,15);
y = linspace(2,4,15);
[xgrid, ygrid] = meshgrid(x,y);
mc = rand(100000,1);
z=zeros(size(xgrid));
for i=1:length(xgrid)
for j=1:length(ygrid)
z(i,j) = mean(xgrid(i,j) + ygrid(i,j) + xgrid(i,j)*ygrid(i,j)*mc);
end
end
我已经对代码进行了矢量化,并通过构建一个矩阵来将其速度提高了大约 2.5 倍,其中 mc 为每个网格点复制。我的实现导致一个非常大的矩阵(3 x 22500000)充满了重复的数据。我通过将矩阵转换为单精度来减轻这种方法的内存损失,但似乎应该有一种更有效的方法来做我想做的事情,以避免复制这么多数据。