matlab处理字符串的一些函数

matlab处理字符串的一些函数

字符串和它的ASCII表示之间转换外, MATLAB还提供了大量的其它的有用的字符串转换 函数。它们包括:


表6.1

字  符  串  转  换

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不能接受用户 定义变量,也不能执行转换过程的算术运算。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值