MATLABでは、小数点以下4桁のみを使用してすべての計算を行う方法はありますか? fprintf('%85.83f\n',single(1.1566)) と書くと、正確には 1.1566 ではありません。私の特定の問題では、これらの余分な数字を蓄積する余裕がありません。すべての内部計算をこの精度でのみ実行したいと考えています。
7503 次
2 に答える
1
既定では、MATLAB はすべての演算を倍精度で実行します。variable precision arithmetic
演算でより低い精度を使用する場合は、Symbolic Math Toolbox の一部である を使用できます。あなたの場合、最初に関数を使用して有効桁数を 4 桁に設定し、digits
関数を使用して変数を宣言および操作しvpa
ます。
old_precision = digits; % Save the old precision
digits(4);
vpa(1/3 + 1/2)
digits(old_precision); % Set the precision back
出力します
>> vpa(1/3+1/2)
ans =
0.8333
もう一つの例:
>> digits(3);
>> a = 5.4;
>> vpa(a)+1/3
ans =
5.73
于 2012-07-06T05:40:10.033 に答える
1
MathWorks は、OP のニーズを満たす可能性のあるFixed-Point Toolboxを提供しています。
ただし、OPのステートメントがこれらの余分な桁を累積する余裕がない場合、実行を高速化し、精度の低下を気にしないためのコードである場合、OPが運が悪いのではないかと恐れています。32 ビットまたは 64 ビット (または両方) の浮動小数点計算がハードウェアに組み込まれている最新のデジタル コンピューターでは、ハードウェア以外の精度での計算はソフトウェアで実行する必要があり、著しく遅くなる可能性があります。
于 2012-07-06T09:20:28.283 に答える