在Matlab中使用cell2mat()时精度损失

时间:2014-04-29 16:38:45

标签: matlab precision cell-array

假设我有一个如下所示的单元格数组:

mycell = 

[-1.6411e-16 + 1.4863e-19i]    [         0.6450 + 0.6433i]
[         0.6450 + 0.6433i]    [-1.6411e-16 + 1.4863e-19i]

我希望它是一个矩阵,所以我使用命令cell2mat

>> mymatrix = cell2mat(mycell)

mymatrix =

  -0.0000 + 0.0000i   0.6450 + 0.6433i
   0.6450 + 0.6433i  -0.0000 + 0.0000i

我当然得到了我期望的单元数组和矩阵的结果,但为什么-1.6411e-16 + 1.4863e-19i被舍入为-0.0000 + 0.0000i?

而且,最重要的是,我怎么能避免这种情况呢?

谢谢。

编辑:我自己已经找到了解决方案。

1 个答案:

答案 0 :(得分:1)

没有精度损失。

只需设置科学记数法格式(简称shortE),即可获得与单元格数组中出现的完全相同的数字:

>> format shortE
>> mymatrix

mymatrix =

  -1.6411e-16 + 1.4863e-19i   6.4503e-01 + 6.4328e-01i
   6.4503e-01 + 6.4328e-01i  -1.6411e-16 + 1.4863e-19i