Chap6第6章文本

上传人:鲁** 文档编号:494244278 上传时间:2023-09-06 格式:DOC 页数:10 大小:87KB
返回 下载 相关 举报
Chap6第6章文本_第1页
第1页 / 共10页
Chap6第6章文本_第2页
第2页 / 共10页
Chap6第6章文本_第3页
第3页 / 共10页
Chap6第6章文本_第4页
第4页 / 共10页
Chap6第6章文本_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《Chap6第6章文本》由会员分享,可在线阅读,更多相关《Chap6第6章文本(10页珍藏版)》请在金锄头文库上搜索。

1、第6章 文 本 MATLAB真正强有力的地方在于它的数值处理能力。然而,经常希望操作文本,例如把标号和标题放在图上。在MATLAB里,文本当作特征字符串或简单地当作字符串。6.1 字符串 在MATLAB中的字符串一般是ASCII值的数值数组,它作为字符串表达式进行显示。例如, t= How about this character string? t =How about this character string? size(t)ans = 1 32 whos Name Size Elements Bytes Density Complex ans 1 by 2 2 16 Full No t

2、 1 by 32 32 256 Full No 一个字符串是由单引号括起来的简单文本。在字符串里的每个字符是数组里的一个元素,字符串的存储要求每个字符8个字节,如同MATLAB的其它变量。因为ASCII字符只要求一个字节,故这种存储要求是浪费的,7/8所分配的存储空间无用。然而,对字符串保持同样的数据结构简化MATLAB的内部数据结构。所给出的字符串操作并不是MATLAB的基本特点,但这种表达是方便和可接受的。 为了了解下面字符串的ASCII表达,只需对字符串执行一些算术运算。最简单和计算上最有效的方法是取数组的绝对值。例如, u=abs(t)u = Columns 1 through 12

3、72 111 119 32 97 98 111 117 116 32 116 104 Columns 13 through 24 105 115 32 99 104 97 114 97 99 116 101 114 Columns 25 through 32 32 115 116 114 105 110 103 63 u=t+0u = Columns 1 through 12 72 111 119 32 97 98 111 117 116 32 116 104 Columns 13 through 24 105 115 32 99 104 97 114 97 99 116 101 114 Co

4、lumns 25 through 32 32 115 116 114 105 110 103 63 在上面后一个例子里,加零到字符串也改变了它的ASCII的表示。函数setstr提供了逆转换。 v=setstr(u)v =How about this character string?因为字符串是数值数组,它们可以用MATLAB中所有可利用的数组操作工具进行操作。例如, u=t(16:24)u =character字符串象数组一样进行编址。这里元素16到24包含单词character u=t(24:-1:16)u =retcarahc这是单词character的反向拼写。 u=t(16:24)

5、 u =character用转置算子将单词character变换成一个列。 v= I cant find the manual! v =I cant find the manual!字符串内的单引号是由两个连续的单引号来表示。字符串连接可以直接从数组连接中得到。 u= If a woodchuck could chuck wood, ; v= how much wood would a woodchuck chuck? ; w=u vw =If a woodchuck could chuck wood, how much wood would a woodchuck chuck? 函数disp

6、允许不打印它的变量名而显示一个字符串。例如,disp(u)If a woodchuck could chuck wood,注意u = 语句被去掉了。这对脚本文件内显示帮助的文本有用。 如同矩阵,字符串可以有多个行,但每行必须有相同数目的列数。因此,显然要用空格以使所有行有相同长度,例如, v= Character strings having more than one row must have the same number of column just like matrices! v =Character strings having more thanone row must hav

7、e the same number of column just like matrices! 考虑下面例子,它把一个字符串转换成大写。首先,函数find用来找出小写字符的下标值,然后,从小写元素中只减去小写与大写之差,最后,用setstr把求得的数组转换成它的字符串表示。 disp(u)If a woodchuck could chuck wood, i=find(u= a & u= a & v ; tape=input(t)Enter number of rolls of tape 5tape = 5 另外,函数input能输入一个字符串: x=input( Enter anything

8、, s )Enter anything anything can be enteredx =anything can be entered 这里,在函数input里的附加参量s告诉MATLAB,作为一个字符串,只要把用户输入传送到输出变量,就不需要引号。事实上,如果将引号包括进去,它们就变成返回字符串的一部分。6.2 字符串转换 除了上面讨论的,字符串和它的ASCII表示之间转换外,MATLAB还提供了大量的其它的有用的字符串转换函数。它们包括:表6.1字 符 串 转 换abs字符串到ASCII转换dec2hex十进制数到十六进制字符串转换fprintf把格式化的文本写到文件中或显示屏上hex

9、2dec十六进制字符串转换成十进制数hex2num十六进制字符串转换成IEEE浮点数int2str整数转换成字符串lower字符串转换成小写num2str数字转换成字符串setstrASCII转换成字符串sprintf用格式控制,数字转换成字符串sscanf用格式控制,字符串转换成数字str2mat字符串转换成一个文本矩阵str2num字符串转换成数字upper字符串转换成大写 在许多情况下,希望把一个数值嵌入到字符串中。几个字符串转换可完成这个任务。 rad=2.5; area=pi*rad2; t= A circle of radius num2str(rad) has an area o

10、f 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 doe

11、s )See what this does fprintf( See what this doesn )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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号