2012-01-28 66 views
1

我在查看matlab控制檯中的雙精度數據時遇到了問題。其實,我從我的數據文件導入矩陣。特定行和列的值爲1.543,但在控制檯中使用disp(x)時,其中x是導入的矩陣,它顯示爲1.0e+03 * 0.0002。但是,當我嘗試使用disp(x(25,25))訪問矩陣中的特定元素時,其中2525是行和列號,它顯示爲1.543。所以我很困惑。任何澄清。只是當我打印整個矩陣時,它顯示爲1.0e+03 * 0.0002查看雙精度值問題

回答

2

以下命令應該修復它。這只是一個顯示問題,矩陣中實際值的精度不受影響:

format shortG 
2

這是由於您的數據的動態範圍很高所致。 嘗試,例如:

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

結果是:

1.0E + 010 *
0.0000 1.0000

看起來像的第一個值是零,但它不是。與第二個相比幾乎爲零。這並不奇怪。嘗試將小的值加到大的值上,然後減去,得到零。這是由於浮點arithmetic.The下面的表達式是true

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

可以做些什麼?

1)真正高的動態範圍可能會導致任何計算中的麻煩。嘗試瞭解它來自哪裏,並在更廣泛的背景下解決問題。 2)。你可以嘗試設置

format long 

它可以改善這種情況視覺對於一些情況。