Matlab中复数的共轭

时间:2015-03-24 15:29:13

标签: c 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

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

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

我的结果错了,我不明白为什么。

我这样做是因为在C代码中,每个复数都由带有变量的结构表示。真实部分和变量。虚拟部分。

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

我想用C编写一个非常相似的matlab代码,以便在C语言中轻松操作变量,并使用Matlab获得类似的结果。

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

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

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