matlab consoleでダブルデータを表示する際に問題が発生しています。実際には、データファイルから行列をインポートしています。特定の行と列の値は1.543
でしたが、disp(x)
を使用したときのコンソールでは、x
がインポートされたマトリックスで、1.0e+03 * 0.0002
と表示されています。しかし、disp(x(25,25))
を使用して行列のその特定の要素にアクセスしようとすると、と25
が行番号と列番号になり、1.543
と表示されます。だから私は混乱している。任意の説明。行列全体を印刷すると、1.0e+03 * 0.0002
と表示されます。double値を表示する際の問題
1
A
答えて
2
次のコマンドで修正する必要があります。これは表示上の問題であり、マトリックス内の実際の値の精度は影響を受けません。
format shortG
2
これは、データのダイナミックレンジが大きいために発生します。 例えば試してみてください。
x = [10^-10 10^10];
disp(x);
結果は次のとおりです。
1.0E + 010 *
0.0000 1.0000
それが第1の値がゼロであるように見えますが、それそうではありません。それは第2のものに比べてほぼゼロです。それは驚くべきことではない。大きな値に小さな値を加えて、減算してゼロになるようにしてください。それが原因浮動小数点にarithmetic.The次の式は、何をtrue
isequal((x(1)+x(2)) - x(2) , 0)
を行うことができますされていますか?
1)非常に高いダイナミックレンジは、あらゆる種類の計算で問題を引き起こす可能性があります。どこから来たのかを理解し、より広い意味で問題を解決してください。
2)。あなたはそれが状況例いくつかのために、視覚的にを向上させることができます
format long
を設定してみてください。