【问题标题】:Issue in viewing double values查看双重值的问题
【发布时间】:2012-02-21 07:02:34
【问题描述】:

我在 matlab 控制台中查看双重数据时遇到问题。实际上,我正在从我的数据文件中导入一个矩阵。特定行和列的值是1.543,但在控制台中,当我使用disp(x) 时,x 是导入的矩阵,它显示为1.0e+03 * 0.0002。但是,当我尝试使用disp(x(25,25)) 访问矩阵中的特定元素时,其中25 和25 是显示为1.543 的行号和列号。所以我很困惑。任何澄清。只是当我打印整个矩阵时,它显示为1.0e+03 * 0.0002。

【问题讨论】:

    标签: matlab floating-point double number-formatting


    【解决方案1】:

    以下命令应该可以修复它。只是显示问题,不影响矩阵中实际值的精度:

    format shortG
    

    【讨论】:

      【解决方案2】:

      这是由于您的数据的动态范围很大。 例如:

       x = [10^-10 10^10];
       disp(x);
      

      结果是:

      1.0e+010 *
      0.0000 1.0000

      它看起来第一个值为零,但事实并非如此。与第二个相比,它几乎为零。这并不奇怪。尝试将小值加到大值上,然后减去,你会得到零。那是由于浮点运算。下面的表达式是true

       isequal( (x(1)+x(2)) - x(2) , 0)
      

      可以做什么?

      1) 非常高的动态范围可能会导致任何类型的计算出现问题。尝试了解它的来源,并在更广泛的背景下解决问题。

      2)。你可以尝试设置

       format long
      

      对于某些情况,它可以在视觉上改善情况。

      【讨论】:

        猜你喜欢
        • 2012-06-14
        • 1970-01-01
        • 1970-01-01
        • 2019-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多