【发布时间】:2015-03-24 12:10:58
【问题描述】:
我正在尝试将代码从 matlab 移植到 C。为了将此行转换为 C:
A = E*[SOLS' ; ones(1,10 ) ];
在哪里,
>>size(SOLS)
ans =
10 3
和:
>> size(E)
ans =
9 4
SOLS 是复单矩阵,E 是实单矩阵,A 应该是大小为 9x10 的复单矩阵。
我将A = E*[SOLS' ; ones(1,10 ) ];替换为
for i=1:9
for j=1:10
A1(i,j)=E(i,1)*SOLS(j,1))+E(i,2)*SOLS(j,2))+E(i,3)*SOLS(j,3))+E(i,4);
end
end
复数矩阵元素的实部与 A 相同,但虚部不同。
>> real(A)=real(A1)
imag(A) and `imag(A1)` are different.
是什么导致了这种差异? matlab命令如何正确转换为C?
以下是矩阵示例:
E =
0.2248 0 0 0
-0.4487 -0.1632 -0.1955 0.6355
0.4379 -0.0651 -0.1032 -0.0754
-0.4008 0.3513 0.2707 -0.5936
-0.2294 -0.7853 -0.3290 -0.4648
0.0385 0.2623 -0.6363 -0.0978
-0.5716 0.0851 0.0943 0.0587
0.1160 -0.3911 0.5964 0.0947
0.0363 -0.0039 -0.0092 -0.0018
和
SOLS =
1.0e+02 *
-0.2410 + 0.0000i 2.3741 + 0.0000i -0.0646 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i -0.0113 - 0.0046i
0.0000 + 0.0000i 0.0000 + 0.0000i -0.0113 + 0.0046i
-0.0028 + 0.0000i -0.0114 + 0.0000i -0.0038 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i -0.0024 - 0.0043i
0.0000 + 0.0000i 0.0000 + 0.0000i -0.0024 + 0.0043i
0.0000 + 0.0000i 0.0000 + 0.0000i -0.0007 - 0.0191i
0.0000 + 0.0000i 0.0000 + 0.0000i -0.0007 + 0.0191i
-0.0080 + 0.0000i 0.0064 + 0.0000i 0.0108 + 0.0000i
-0.7289 + 0.0000i 4.9347 + 0.0000i 0.3841 + 0.0000i
【问题讨论】:
-
您说您要将其从 Matlab 转换为 C。
for循环不在 C 中。您实际上想做什么?我看不到任何到 C 的转换。 -
将 for 循环从 Matlab 转换为 C 是微不足道的。我想先在 Matlab 中测试它,然后在 C 中编写它
-
您的问题并未说明您正在尝试这样做。您声明您正在尝试从 Matlab 转换为 C。您的问题说明了一件事,但您实际上正在尝试做另一件事,这使问题变得混乱。请记住,您必须以一种不熟悉您项目的人能够理解的方式编写。请看How To Ask