版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 字符串,字符串数组的建立 单元数组的建立 结构数组的建立 数字与字符串的相互转换,第一节 字符串数组的建立,在Matlab中,字符串数组的建立方法有多种,下面举例说明。 【例3-1】 直接输入法创建字符串数组。 a=hello; b=你好; c=a, ,b,.; a a = hello, b b = 你好 c c = hello 你好.,从例3-1中可以看出,创建字符串数组的基本方法就是直接用单引号将一系列字符串括起来,其中的每个字符都是该字符串的一个元素,通常用两个字节来存储;当字符串文字中包含单引号时,每个单引号符号需要使用2个连续的单引号字符;并且可以直接引用短的字符串构成长的字
2、符串。,注意 :字符串是特殊的ASCII数值型数组,而显示出来的是字符形式。,【例3-2】 利用ASCII码创建字符串数组。 b=你好; ASCIIb=double(b); c=char(ASCIIb); b b = 你好 ASCIIb ASCIIb = 20320 22909 c c = 你好,【例3-3】 使用函数创建字符串数组。 c1=char(China changchun,ccit); c2=str2mat(China,Changchun,ccit); a1=auto; a2=film; a3=forest; a4=city; b1=strvcat(a1,a4); b2=strvca
3、t(a2,a4); b3=strvcat(a3,a4);,查看上述语句运行结果。在命令窗口输入变量名,结果如下:, c1 c1 = China changchun ccit c2 c2 = China Changchun ccit b1 b1 = auto city,在Matlab中,使用以上三个函数来创建字符串时,不需要注意每个字符串变量的长度是否相等。 值得注意的是,函数strcat()在合并字符串的同时会把字符串结尾的空格删除。, b2 b2 = film city b3 b3 = forest city,第二节 单元数组的建立,单元数组的建立方法有三种方式 : 1、利用赋值语句建立单元
4、数组,【例3-4】 利用赋值语句建立一个单元数组。 A(1,1)=Matlab; A(1,2)=7.0; A(2,1)=矩阵; A(2,2)=1 2 3;4 5 6;7 8 9; A A = Matlab 7.0 矩阵 3x3 double,当然,也可以用另外一种方法建立,即用花括号括起单元的下标,在赋值语句的右侧直接指定单元的内容。如上面的命令可写成: A1,1=Matlab; A1,2=7.0; A2,1=矩阵; A2,2=1 2 3;4 5 6;7 8 9; A A = Matlab 7.0 矩阵 3x3 double 2、利用单元数组法建立单元数组 建立单元数组时,可以在花括号中直接赋
5、值,单元与单元之间用逗号、空格或分号隔开。,【例3-5】 利用单元数组法建立一个单元数组。 A=Matlab,7.0,矩阵,1 2 3;4 5 6;7 8 9 A = Matlab 7 矩阵 3x3 double 若想与前面的例子显示一致,可以将“7.0”后面的逗号改成分号即可。,3、利用函数cell建立单元数组,cell函数是用来预分配指定大小的单元数组,其调用格式如下: c=cell(n) 建立nn单元数组,单元是空矩阵。 c=cell(m,n)或c=cell(m,n) 建立mn单元数组,单元是空矩阵。,c=cell(m,n,p,)或c=cell(m,n,p) 建立mnp的单元矩阵。 c=
6、cell(size(A) 建立和A大小相同的单元数组。 事实上,利用cell函数建立单元数组,是先用cell生成一个空的单元数组,然后再向其中添加所需的数据,见例3-6:,【例3-6】 利用cell函数建立单元数组,然后再向其中个别单元添加数据。 C=cell(3,3) C = , C(1,1)=The Grate Wall C = The Grate Wall C(1,2)=The Summer Palace C = The Grate Wall The Summer Palace C(2,1)=1 2;2 1 C = The Grate Wall The Summer Palace 2x2
7、 double , C(3,2)=celldisp C = The Grate Wall The Summer Palace 2x2 double celldisp C(3,3)=cellplot C = The Grate Wall The Summer Palace 2x2 double celldisp cellplot 由例3-6可见,单元数组中的内容一般以压缩的形式显示,我们可以通过函数celldisp来查看单元数组中的详细内容或通过函数cellplot以图形的形式显示单元数组的内容。,【例3-7】 建立一个单元数组,用函数celldisp和cellplot将其显 示出来。 clea
8、r A A(1,1)=3 2 0;6 3 9;5 5 5; A(1,2)=1+i; A(2,1)=cellarray; A(2,2)=-3:6; A A = 3x3 double 1.0000 + 1.0000i cellarray 1x10 double celldisp(A) A1,1 = 3 2 0 6 3 9 5 5 5,A2,1 = cellarray A1,2 = 1.0000 + 1.0000i A2,2 = -3 -2 -1 0 1 2 3 4 5 6 cellplot(A),图3-1 图形方式显示的单元数组,由图3-1可见,cellplot命令用大白方格表示各个单元,此例共4
9、个单元,所以有4个白方格;用小方格表示单元内容;色彩表示数据类型,由于仅A(2,1)单元的内容为字符型,所以它的颜色与其余均为数值型的单元内容的颜色不同。,注意:对于单元数组来说,单元和单元里的内容是两个完全不同的范畴。因此,寻访单元和寻访单元内容是两种不同的操作。以二维单元数组为例,A(4,2)是A单元数组中的第4行第2列单元元素;而A4,2是指A单元 数组中的第4行第2列单元中所允许存取的内容。两者的区别仅是用圆括号或是用花括号。,第三节 结构数组的建立,结构数组可以采用直接建立的方法,此种方法是直接建立结构的各个域,同时给各域赋值,结构和域之间用点连接。在访问结构数组的各个域时,也是“结
10、构数组名.域名”的格式。当结构带有子域时,需完整地键入结构名、域名、子域名,才能显示域中的内容。结构数组的各个域可以按照其本身的数据类型进行相应的各种运算。,【例3-8】 采用直接法建立一个结构数组。, =FFT频谱分析; experiment.place=数字信号处理实验室; experiment.grade=电子0541班; experiment.grade.group=24组; experiment experiment = name: FFT频谱分析 place: 数字信号处理实验室 grade: 1x1 struct experiment.place a
11、ns = 数字信号处理实验室 experiment.grade ans = group: 24组 experiment.grade.group ans = 24组,除了上面的直接建立法外,Matlab还提供了函数structure创建结构数组的,其调用格式如下: S=struct(field1,values1,field2,values2,.) 使用指定的域名和各个域的数据建立结构数组。 如果数组中包含有多个结构,各个结构域中的数据又不尽相同,则域的数据values1、values2必须是单元数组,建立的结构数组和单元数组的大小相同。,【例3-9】 利用“structure”函数建立一个结构数
12、组。 clear,s=struct(property,tall,short,age,old,young, skin,black) s = 1x2 struct array with fields: property age skin,第四节 数字与字符串的相互转换,在Matlab中,有时需要我们把一个数值转换成一个字符串,或者把一个字符串转换成一个数值。Matlab提供了一系列的函数来完成这些操作,如int2str、num2str、mat2str、sprintf和fprintf等,如:, A1=int2str(eye(4) % 将整数转换成字符串 A1 = 1 0 0 0 0 1 0 0 0
13、0 1 0 0 0 0 1 % 结果为字符型矩阵, size(A1) ans = 4 10 A2=num2str(rand(3) % 将数值转换成字符串 A2 = 0.95013 0.48598 0.45647 0.23114 0.8913 0.018504 0.60684 0.7621 0.82141, size(A2) ans = 3 31 A3=mat2str(pi/2*eye(2) % 将矩阵转换成字符串 A3 = 1.5707963267949 0;0 1.5707963267949 size(A3) ans = 1 37,除了以上三种函数以外,Matlab还提供了fprintf和s
14、printf两种转换 函数,其名称和用法与C语言中的格式转换(printf)类似。 fprintf(% .4gn,sqrt(2) ans = 1.414 sprintf(% .4g,sqrt(2) ans = 1.414 size(ans) ans = 1 5 其中,% .4n是字符显示时的格式声明,表明显示4位有效位; n是换行符。,在进行数据与字符串之间的转换时,格式声明非常重要。下面以pi为例说明不同格式声明下的具体转换结果,见表3-1:,表3-1 数据与字符串转换时格式声明举例列表,其中,参数e表示转换成指数形式,参数f表示带有多少个小数位,参数g表示使用e或f中较短的表达式。需要注意
15、的是,对于e和f,小数点右边的数字表示在小数点后要显示多少位,而对于g来说,小数点右边的数字表示总共显示多少位。表3-1的后5种表示中,小数点前面的数字指定了8个字符的宽度,显示结果右对齐。比较特殊的是最后一行中,显示宽度超过了8,这是由于小数点后面指定显示的位数是10。,表3-2 数值转换为字符串的函数,在Matlab中,不仅提供了将数值转换成字符串的函数,同时也提供了一系列逆操作函数,如str2num函数、str2double函数以及sscanf函数等等。下面我们开始讨论将字符串转换成数值函数的具体用法。,首先介绍一下函数num2str逆操作str2num的用法。 s=num2str(lo
16、g(3)*eye(3) s = 1.0986 0 0 0 1.0986 0 0 0 1.0986 ischar(s) % 判定s是否为字符串数组,如果是,返回逻辑值1, 否则,返回逻辑值0,ans = 1 n=str2num(s) n = 1.0986 0 0 0 1.0986 0 0 0 1.0986 isnumeric(n) % 判定n是否为数值数组 ans = 1 isfloat(n) % 判定n是否为浮点数值数组 ans = 1 A=log(3)*eye(3)-n A = 1.0e-004 * 0.1229 0 0 0 0.1229 0 0 0 0.1229,函数str2num可以对一
17、个表达式的值进行转换,但该表达式中不能包含工作区中的变量。,下面介绍函数sprintf的逆操作sscanf函数用法,函数sscanf可以根据格式指示符从一个字符串中读取数据。, v=version % 获取Matlab版本信息 v = 46 (R14) Service Pack 3 sscanf(v,% f) % 获取浮点数值 ans = 7.1000 0 0.2460, sscanf(v,% f,1) % 获取浮点数值第一项 ans = 7.1000 sscanf(v,% d) % 获取整数数值 ans = 7 sscanf(v,% s) % 获取字符串 ans = 7.1.0
18、.246(R14)ServicePack3,函数str2double的用法, clear c=8.693*exp(2);-38.565;3.327; d=str2double(c) d = NaN -38.5650 3.3270 whos Name Size Bytes Class c 3x1 228 cell array d 3x1 24 double array Grand total is 30 elements using 252 bytes,Matlab 7为用户提供的将字符串转换数值的函数如表3-3所示:,表3-3 字符串转换为数值的函数,第五节 字符串函数,Matlab提供了许多与字符串有关的函数。 下面通过几个示例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海事内部安全制度
- 海运公司内部管理制度
- 云南文化艺术职业学院《内科护理学(二)》2024-2025学年第二学期期末试卷
- 煤矿内部监管制度
- 煤矿通防科内部管理制度
- 烟台科技学院《电子商务物流管理》2024-2025学年第二学期期末试卷
- 甲方内部管理制度
- 监理内部质量考核制度
- 磷矿矿山内部管理制度
- 科室内部报账制度及流程
- 垃圾填埋场封场与复绿方案
- 八年级地理(下册星球版)复习提纲
- 广西版五年级下册美术全册教案【完整版】
- 新人教版一年级数学下册全册教案(表格式)
- 交通事故车辆定损表
- 班组管理方面技能培训方案
- 锂产业发展现状及趋势课件
- 家谱树形图模板
- 校园文化建设情况自查报告
- 【基于7P理论的汉庭酒店服务营销策略14000字(论文)】
- 总经理财务知识培训
评论
0/150
提交评论