我在matlab控制台中查看双数据时遇到问题。实际上,我从我的数据文件导入矩阵。特定行和列的值为1.543
但在控制台中,当我使用disp(x)
导入的矩阵x
时,它显示为1.0e+03 * 0.0002
。但是,当我尝试使用disp(x(25,25))
访问矩阵中的特定元素时25
和25
是行号和列号,它显示为1.543
。所以我很困惑。任何澄清。只是当我打印整个矩阵时,它显示为1.0e+03 * 0.0002
。
答案 0 :(得分: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
对于某些情况,它可以在视觉上改善的情况。
答案 1 :(得分:2)
以下命令应该修复它。这只是一个显示问题,矩阵中实际值的精度不受影响:
format shortG