【问题标题】: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
对于某些情况,它可以在视觉上改善情况。