gpt4 book ai didi

Matlab中复数的共轭

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:57 26 4
gpt4 key购买 nike

为了将 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 

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com