Matlab自动将数组类型从复数转换为double

时间:2016-10-25 20:06:03

标签: matlab

我有一个烦人的情况,我无法用我的google-fu解决,所以转向我们的常驻matlab专家寻求帮助。

假设我运行以下代码

""

我得到以下输出

AA = ones(10,2) + j*ones(10,2)
whos

for i=1:10
    AA(i,:) = i + sqrt(i);
end
AA
whos

为什么matlab会自动将特定请求的数组转换为复数?

这是一个问题,因为我有一个返回值可能复杂或不复杂的函数,我希望能够存储这两个值。

即使我尝试 AA = 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i 1.0000 + 1.0000i Name Size Bytes Class Attributes AA 10x2 320 double complex AA = 2.0000 2.0000 3.4142 3.4142 4.7321 4.7321 6.0000 6.0000 7.2361 7.2361 8.4495 8.4495 9.6458 9.6458 10.8284 10.8284 12.0000 12.0000 13.1623 13.1623 Name Size Bytes Class Attributes AA 10x2 160 double i 1x1 8 double

,也会发生完全相同的行为

编辑:我应该指定如果第一次调用我的函数返回一个实数值,那么上面发生的事情也会发生。但是如果函数的第一次返回很复杂(无论循环的其余部分返回什么),那么数组将保持复杂。

1 个答案:

答案 0 :(得分:0)

因为你通过重用变量来填充非复数值,试试这个:

<Logger name="what to put here for jsp?" level="DEUBUG">
</Logger>