繁体   English   中英

Matlab中复数的共轭

[英]Conjugate of a complex number in Matlab

为了将Matlab代码转换为C,我想先以类似于C的方式编写它,然后对其进行翻译就变得微不足道了。 我在这条线上遇到了问题:

A = E*[SOLS' ; ones(1,10 ) ];

其中E是(9x4)实数矩阵,而SOLS是(3x10)复数矩阵。 A应该是9x10的复杂矩阵。

我将此行翻译如下:

for i=1:9
  for j=1:10
    A(i,j)=E(i,1)*conj(SOLS(j,1))+E(i,2)*conj(SOLS(j,2))+E(i,3)*conj(SOLS(j,3))+ E(i,4);
  end
end

我得到了相同的结果。 例如,当我用real(X)-i*imag(X)替换conj(X)

conj(SOLS(j,1))  by `real(SOLS(j,1))-imag(SOLS(j,1))*i`, 

我得到一个错误的结果,我不明白为什么。

我这样做是因为在C代码中,每个复数都由具有variable.re为实数部分和variable.im为虚数部分的结构表示。

typedef struct COMPLEX{
    float re;
    float im;
}Complex;

我想编写与C非常相似的matlab代码,以便在C中轻松处理变量,并获得与Matlab类似的结果。

请问如何纠正?

您正在使用i作为循环索引和sqrt(-1) 如果要替换conj(SOLS(j,1))改用

 real(SOLS(j,1))-imag(SOLS(j,1))*1i 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM