这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » MATLAB字符串转换函数

共1条 1/1 1 跳转至

MATLAB字符串转换函数

助工
2014-12-18 19:27:00     打赏

字  符  串  转  换 
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经常是函数disp的一个有用替换,由于它提供了对结果更多的控制。当准备把格式化的数据写到一个文件中去时,按缺省它在命令窗口显示结果。例如, 
                             » fprintf(' See what this does ') 
                             See what this does» 
                             » fprintf(' See what this does\n ') 
                             See what this does 
    在上面第一个例子里,fprintf显示字符串,然后立即给出MATLAB提示符。相反,在第二个例子里,\n 插入一个新行字符,在MATLAB提示符出现之前创建一个新行。 
    无论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结果。 
表6.2 
数  值  格  式  转  换  例  子 
命令 结果 
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 
从上面看不明显,上面的每行有同样数目的元素。较短行用空格补齐,使结果形成一个有效的矩阵 
    在逆方向转换中,有时是很方便的。 
                   » s= ' [1  2; pi  4] '     %  a string of a MATLAB matrix 
                   s = 
                   [1  2; pi  4] 
                   » str2num(s) 
                   ans = 
                       1.0000    2.0000 
                       3.1416    4.0000 
                   » s=' 123e+5 '      %  a string containing a simple number 
                   s = 
                   123e+5 
                   » str2num(s) 
                   ans = 
                       12300000 
    函数str2num不能接受用户定义的变量,也不能执行转换过程的算术运算。


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]