我有一个烦人的情况,我无法用我的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
编辑:我应该指定如果第一次调用我的函数返回一个实数值,那么上面发生的事情也会发生。但是如果函数的第一次返回很复杂(无论循环的其余部分返回什么),那么数组将保持复杂。
答案 0 :(得分:0)
因为你通过重用变量来填充非复数值,试试这个:
<Logger name="what to put here for jsp?" level="DEUBUG">
</Logger>