Matlab字符串转换及数值格式转换
字符串转换函数
abs 字符串到ASCII转换
dec2hex 十进制数到十六进制字符串转换
fprintf 把格式化的文本写到文件中或显示屏上
hex2dec 十六进制字符串转换成十进制数
hex2num 十六进制字符串转换成IEEE浮点数
int2str 整数转换成字符串
lower 字符串转换成小写
num2str 数字转换成字符串
setstr ASCII转换成字符串
sprintf 用格式控制,数字转换成字符串
sscanf 用格式控制,字符串转换成数字
str2mat 字符串转换成一个文本矩阵
str2num 字符串转换成数字
upper 字符串转换成大写
在许多情况下,希望把一个数值嵌入到字符串中。几个字符串转换可完成这个任务。
? rad=2.5; area=pi*rad^2;
? t=[' A circle of radius ' num2str(rad) ' has an area of ' num2str(area) ' . ' ] ;
? disp(t)
A circle of radius 2.5 has an area of 19.63.
这里函数num2str用来把数值转换成字符串,字符串连接用来把所转换的数嵌人到一个字符串句子中。
按类似方式,int2str把整数转换成字符串。无论是num2str还是int2str都调用函数sprintf,它用类似C语言语法把数值转换成字符串。
无论fprintf还是sprintf以同样方式处理输入参量,但fprintf把输出送到显示屏或文件中,而sprintf把输出返回到一个字符串中。例如,上面的例子用num2str可重写为
? t=sprintf(' A circle of radius %.4g has an area of %.4g. ', rad, area);
? disp(t)
A circle of radius 2.5 has an area of 19.63.
? fprintf(' A circle of radius %.4g has an area of %.4g.\n ' , rad, area)
A circle of radius 2.5 has an area of 19.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格式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
f
printf(' %.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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论