与MATLAB中的复杂数字操作混淆
我对MATLAB中复杂数字的操纵感到困惑。 我有EE
是一个9x4
实矩阵,我想用一个复杂的10x3
矩阵SOLS
乘以。 Matlab中的nitial代码是:
Evec= EE*[SOLS' ; ones(1,10 ) ];
这条线通常等同于:
SOLSt=SOLS';
for i=1:9
for j=1:10
Evec(i,j)=EE(i,1)*SOLSt(1,j)+EE(i,2)*SOLSt(2,j)+EE(i,3)*SOLSt(3,j)+EE(i,4);
end
end
为什么上述循环不能给出与以下结果相同的结果:
for i=1:9
for j=1:10
RE(i,j)=EE(i,1)*real(SOLSt(1,j))+EE(i,2)*real(SOLSt(2,j))+EE(i,3)*real(SOLSt(3,j))+EE(i,4);
IM(i,j)=EE(i,1)*imag(SOLSt(1,j))+EE(i,2)*imag(SOLSt(2,j))+EE(i,3)*imag(SOLSt(3,j))+EE(i,4);
end
end
Evec=complex(RE,IM);
当我做SOLSt=SOLS'
我们做了一个共轭转置,没关系。 现在,将实矩阵EE
与作为SOLS
的共轭转置的复矩阵SOLSt
。 在数学上,它给出了一个虚数,实数部分是指EE(i)
和Real(SOLSt(i))
的乘积,其虚部是指EE(i)
和imag(SOLSt(i))
,由上述第二个版本翻译,但这给出了第一个版本的不同结果,这也是EE(i)
与SOLSt(i)
乘积。我从结果差异中理解的是当我写入EE(i)*SOLSt(i)
Matlab不能完全执行实部和虚部的乘积。 我不想使用SOLS'.
,我只想找到与初始命令Evec= EE*[SOLS' ; ones(1,10 ) ];
Evec= EE*[SOLS' ; ones(1,10 ) ];
不使用“ .'
以不同的方式
在你复杂的部分Evec
的行中,你包含了EE(i,4)
。 这不应该存在,因为它只存在于解决方案的实际部分。 事情工作正常,如果你使用它,而不是:
IM(i,j)=EE(i,1)*imag(SOLSt(1,j))+EE(i,2)*imag(SOLSt(2,j))+EE(i,3)*imag(SOLSt(3,j));
链接地址: http://www.djcxy.com/p/24381.html