很抱歉,如果这是一个愚蠢的问题,但我是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?
答案 0 :(得分:3)
我认为你走在正确的轨道上,你只是在语法方面遇到了一些问题
假设ObjectTrack
是一个矩阵,你应该做的是:
sprintf('%.2f\n', ObjectTrack3(:, 6))
这将从ObjectTrack3
中选择6 th 列并将其发送到sprintf
命令。请注意sprintf
对其输入列向量的每个元素进行操作,因此对'\n'
进行操作,以便每个元素都以新行打印。
编辑:此答案还假设您只想以所需的精度打印列,但不要更改它。如果你想要后者,请考虑Memming的答案。
答案 1 :(得分:0)
根据@Peter的评论,我认为你想要的是:
ObjectTrack3 = round(ObjectTrack3 * 100) / 100;
理解应该足够直观。 sprintf
是创建字符串,而不是双打。