matlab:在矩阵列中返回小数点后的2个数字

时间:2012-05-25 12:27:13

标签: matlab precision

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

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

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

没关系,输出是:ans = 3.40

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

我该怎么做?

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:0)

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

ObjectTrack3 = round(ObjectTrack3 * 100) / 100;

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