与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

上一篇: Confusion with complex numbers manipulation in MATLAB

下一篇: real and imaginary part of a complex number