加速for循环与矩阵乘法?



我的程序的一部分包含这段代码:

size2=2500;
gran=3; 
A=ones(size2,size2);
for k=1:gran:(size2-gran)
for j=1:gran:(size2-gran)
X=rand*2*pi-pi;
for h=1:gran
for l=1:gran
A(k+l-1,j+h-1) = A(k+l-1,j+h-1) *exp(+1i*X);  %phase in the square gran x gran
end
end
end
end

我的电脑运行这个代码在0.60秒,但我想知道是否有可能加快这个过程。

一种更快的方法是将其写成矩阵乘法,但为了写出X,我认为我必须创建一个for循环。

有没有办法提高这段代码的速度?

for循环需要替换为具有2x2重复的随机相位矩阵。可以将随机变量创建为大小为A

的矩阵
X = rand(size2/2)*2*pi-pi;
X = kron(X,ones(2));

然后

A = A.*X;

相关内容

  • 没有找到相关文章

最新更新