matlab字符串
Matlab字符串转换及数值格式转换2010-04-0710:33字符串转换函数
abs字符串到ASCII转换
dec2hex十进制数到十六进制字符串转换
fprintf把格式化的文本写到文件中或显示屏上
hex2dec十六进制字符串转换成十进制数
hex2num十六进制字符串转换成IEEE浮点数
int2str整数转换成字符串
lower字符串转换成小写
num2str数字转换成字符串
setstrASCII转换成字符串
sprintf用格式控制,数字转换成字符串
sscanf用格式控制,字符串转换成数字
str2mat字符串转换成一个文本矩阵
str2num字符串转换成数字
upper字符串转换成大写
在许多情况下,希望把一个数值嵌入到字符串中。几个字符串转换可完成这个任务。
?rad=2.5;area=pi*rad^2;
?t=['Acircleofradius'num2str(rad)'hasanareaof'num2str(area)'.'];
?disp(t)
Acircleofradius2.5hasanareaof19.63.
这里函数num2str用来把数值转换成字符串,字符串连接用来把所转换的数嵌人到一个字符串句子中。按类似方式,int2str把整数转换成字符串。无论是num2str还是int2str都调用函数sprintf,它用类似C语言语法把数值转换成字符串。
无论fprintf还是sprintf以同样方式处理输入参量,但fprintf把输出送到显示屏或文件中,而sprintf把输出返回到一个字符串中。例如,上面的例子用num2str可重写为
?t=sprintf('Acircleofradius%.4ghasanareaof%.4g.',rad,area);
?disp(t)
Acircleofradius2.5hasanareaof19.63.
?fprintf('Acircleofradius%.4ghasanareaof%.4g.\n',rad,area)
Acircleofradius2.5hasanareaof19.63.
这里%.4g是用在函数num2str中的数据格式。%.4g就是用指数或定点标记,不管哪一种更短些,只显示至4位数字。除了g格式,还可用e(指数)和f(定点)转换。表6.2表明在各种不同转换下,如何显示pi结果。
数值格式转换例子
命令结果
fprintf('%.0e\n',pi)3e+00
fprintf('%.1e\n',pi)3.1e+00
fprintf('%.3e\n',pi)3.142e+00
fprintf('%.5e\n',pi)3.14159e+00
fprintf('%.10e\n',pi)3.1415926536e+00
fprintf('%.0f\n',pi)3
fprintf('%.1f\n',pi)3.1
fprintf('%.3f\n',pi)3.142
fprintf('%.5f\n',pi)3.14159
fprintf('%.10f\n',pi)3.1415926536
fprintf('%.0g\n',pi)3
fprintf('%.1g\n',pi)3
fprintf('%.3g\n',pi)3.14
fprintf('%.5g\n',pi)3.1416
fprintf('%.10g\n',pi)3.141592654
fprintf('%.8.0g\n',pi)3
fprintf('%.8.1g\n',pi)3
fprintf('%.8.3g\n',pi)3.14
fprintf('%.8.5g\n',pi)3.1416
fprintf('%.8.10g\n',pi)3.141592654
注意,对e和f格式,小数点右边的十进制数就是小数点右边要显示的多少位数字。相反,在g的格式里,小数点右边的十进制数指定了显示数字的总位数。另外,注意最后的五行,其结果指定为8个字符长度,且是右对齐。在最后一行,8被忽略,因为指定超过了8位。
概括起来,当需要比缺省函数disp,num2str和int2str所提供的更多的控制时,fprintf和sprintf是有用的。
函数str2mat把一列的几个字符串转换成一个字符串矩阵。例如,
?a='one';b='two';c='three';
?disp(str2mat(a,b,c,'four'))
one
two
three
four