sprintf函数在matlab中的参数和格式

时间:2013-07-10 10:38:31

标签: matlab

我正在阅读并重新阅读有关matlab中函数 sprintf 的帮助,但我不了解这个函数以及它们所讨论的格式的所有内容。 / p>

我问自己功能格式背后的逻辑。

如果我运行示例

sprintf('%05d%s%02d%s%02d',546,'.',1,'.',3)

我得到了

00546.01.03

这是逻辑,因为第一个数字(546)被写成一个整数并且有5个数字,第二个是一个字符,依此类推......但是如果现在我试试这个

sprintf('%05d%s%02d%s%02d',546,'.',1,'.',3,4)

我得到了

00546.01.0300004

第一部分与上面相同......但它的最后一部分(00004)的格式为'%05d',这与我在函数参数中输入的第一种格式相对应。我的问题是第一种格式是否为“默认”格式?

试试这个

sprintf('%05d%s%02d%s%02d',546,'.',1,'.',3,4,56)

得到这个

00546.01.03000048

我认为答案是没有 ......但为什么呢?而这些论点背后的逻辑是什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您提供的sprintf参数比格式字符串中的%多。{1}}因此,sprintf重新使用开头的格式字符串:

sprintf('%05d%s%02d%s%02d',546,'.',1,'.',3,4,56)

结果:

00546.01.03000048
         ^  
         starting fromat anew printing 00004 for %05d with 4   

最后的'8'字符打印为'%s'(如果你想查看它的ascii code'8'(字符)是56!)