【问题标题】:Loss of precision when using cell2mat() in Matlab在 Matlab 中使用 cell2mat() 时精度损失
【发布时间】:2014-04-29 16:38:45
【问题描述】:

假设我有一个像下面这样的元胞数组:

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?

还有,最重要的是,我该如何避免这种情况?

谢谢。

编辑:我自己想出了解决方案。

【问题讨论】:

    标签: matlab precision cell-array


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 2016-09-26
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 2018-05-21
      • 2010-10-16
      相关资源
      最近更新 更多