0

抱歉,如果这是个愚蠢的问题,但我是 MATLAB 新手。我有一个包含float数字的大矩阵,我想更改矩阵以显示小数点后的两个数字。

当我在命令窗口中输入以下代码时:

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

没关系,输出是:ans = 3.40

但是,当我添加sprintf('%.2f', ObjectTrack3(i,6))代码以仅显示第 6 列中所有项目的小数点后两个数字时ObjectTrack3,它只会给我一个错误。

我怎样才能做到这一点?

(代码用于将单元格数组转换为矩阵)

在某人的指导下,我刚刚注意到矩阵的一个单元格的实际数字是 44.849998474121094 但我只看到 44.8500 0.400000005960465 显示为 0.4000

为什么它加零?为什么它不显示 0.4 和 44.85 ?

4

2 回答 2

3

我认为你在正确的轨道上,你只是在语法上遇到了一些问题。
假设这ObjectTrack是一个矩阵,你应该做的是:

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

这会从中选择第 6ObjectTrack3并将其发送到sprintf命令。请注意,sprintf对其输入列向量的每个元素进行操作,因此'\n'每个元素都打印在新行中。

编辑:此答案还假设您只想以所需的精度打印列,但不更改它。如果您想要后者,请考虑 Memming 的回答。

于 2012-05-25T15:01:49.760 回答
0

根据@Peter 的评论,我认为你想要的是:

ObjectTrack3 = round(ObjectTrack3 * 100) / 100;

它应该足够直观以便理解。sprintf是创建字符串,而不是双打。

于 2012-05-25T14:58:53.297 回答