首先大概翻译一下帮助文档里面对sprintf函数的描述。
sprintf函数的官方定义是把数据格式转换成字符串或字符向量(Format data into string or character vector)。
语法结构有以下三种:
str = sprintf(formatSpec,A1, ... ,An):按照formatSpec定义的格式规范将列向量A1至An中的数据转换成字符,并将结果返回至str中。
[str,errmsg] = sprintf(formatSpec,A1, ... ,An) :当运算出错时,返回错误信息至errmsg,无错误时,errmsg为空。
str = sprintf(literalText):将文本literalText中的转义字符(如n和t)翻译出来并返回其他字符。如果literalText包含格式运算符(如%f),str会丢弃它和之后的字符。
在使用sprintf函数时,通常都是文本和向量一起作为输入,例如运行如下代码,就会返回str ='The array is 2x3.'
formatSpec = 'The array is %dx%d.';
A1 = 2;
A2 = 3;
str = sprintf(formatSpec,A1,A2)
我认为sprintf在使用时需要注意的是格式运算符,使用方法汇总如下:
%d是输出整型,%4d就是要求输出长度为4的整型,例如A = sprintf('%d',5)返回的是A='5',A = sprintf('%4d',5)返回的是A=' 5',不足的长度会用空格' '补充。但是我试了下用%d输出小数,发现也是可以输出的,如A = sprintf('%d',5.2)返回的是A='5.200000e+00',和A = sprintf('%e',5.2)的输出结果是一样的。
%e是按照科学计数法输出。
%g会根据数据的大小以及种类,合理的选择输出类型。
%f是输出小数,%6.2f的意思就是输出总长度为6,小数点后保留两位的小数,如A = sprintf('%6.2f',3.1415)返回的是A=' 3.14'.
%c是输出字符,%s是输出字符串。这两个的输出结果是不一样的,例如A = 'ZH', sprintf('A is %c',A)得到的是'A is ZA is H',而 sprintf('A is %s',A)得到的是'A is ZH'。