Ver*_*ion 0 optimization matlab matrix
我正在尝试创建一个复杂坐标矩阵,以便它包含我指定的实数和虚数的所有组合.例如:
Re = 0:0.5:1; % Real numbers
Im = 0:0.5:1; % Imaginary numbers
C = zeros(length(Re),length(Im)); % Pre-allocate matrix
for i = 1:length(Re)
for j = 1:length(Im)
C(i,j) = complex(Re(i),Im(j)); % Real part + Imaginary part
end
end
Run Code Online (Sandbox Code Playgroud)
结果是:
Re =
0 0.5000 1.0000
Im =
0 0.5000 1.0000
C =
0.0000 + 0.0000i 0.0000 + 0.5000i 0.0000 + 1.0000i
0.5000 + 0.0000i 0.5000 + 0.5000i 0.5000 + 1.0000i
1.0000 + 0.0000i 1.0000 + 0.5000i 1.0000 + 1.0000i
Run Code Online (Sandbox Code Playgroud)
当我使实数和虚数向量变大时,这个循环需要相当长的时间.有没有更快的方法来创建这样的矩阵?
您可以使用bsxfun与@plus处理:
>> re = 0:0.5:1;
>> im = 0:0.5:1;
>> bsxfun(@plus,re(:),im(:).'*1i)
ans =
0.0000 + 0.0000i 0.0000 + 0.5000i 0.0000 + 1.0000i
0.5000 + 0.0000i 0.5000 + 0.5000i 0.5000 + 1.0000i
1.0000 + 0.0000i 1.0000 + 0.5000i 1.0000 + 1.0000i
Run Code Online (Sandbox Code Playgroud)