为了将一个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代码中,每个复数都由一个带变量的结构表示。re是实部,variable.I m是虚部。
typedef struct COMPLEX{
    float re;
    float im;
}Complex;

我想写一个非常类似的matlab代码到C中,以便于在C中操作变量,并用matlab得到类似的结果。
请问怎么改?

最佳答案

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

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

关于c - Matlab中复数的共轭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29236660/

10-11 16:40