0

これがばかげた質問である場合は申し訳ありませんが、MATLABは初めてです。数値を含む大きな行列がありfloat、小数点以下2つの数値を表示するように行列を変更したいと思います。

コマンドウィンドウに以下のコードを入力すると、次のようになります。

 sprintf('%.2f',  ObjectTrack3(5,6))

それは大丈夫です、そして出力は次のとおりです:ans = 3.40

ただし、コードを追加sprintf('%.2f', ObjectTrack3(i,6))して、から6列目のすべての項目の小数点以下2桁のみを表示するとObjectTrack3、エラーが発生します。

これどうやってするの?

(コードはセル配列を行列に変換するためのものです)

誰かのガイドと一緒に、マトリックスのセルの1つの実際の数が44.849998474121094であることに気づきましたが、44.85000.400000005960465が0.4000と表示されているのがわかります。

なぜゼロを追加するのですか?なぜ0.4と44.85が表示されないのですか?

4

2 に答える 2

3

あなたは正しい方向に進んでいたと思います。構文に問題があっただけです。
それがマトリックスであると仮定するとObjectTrack、あなたがすべきことは次のとおりです。

sprintf('%.2f\n', ObjectTrack3(:, 6))

これにより、から6番目の列が選択ObjectTrack3され、コマンドに送信されますsprintfsprintfこれは、入力列ベクトルの各要素を操作する'\n'ため、すべての要素が新しい行に出力されることに注意してください。

編集:この回答は、列を希望の精度で印刷したいだけで、変更したくないことも前提としています。後者が必要な場合は、メミングの答えを検討してください。

于 2012-05-25T15:01:49.760 に答える
0

@Peterのコメントによると、私はあなたが欲しいものは次のとおりだと思います:

ObjectTrack3 = round(ObjectTrack3 * 100) / 100;

理解できるほど直感的である必要があります。sprintfダブルスではなく、文字列を作成することです。

于 2012-05-25T14:58:53.297 に答える