matlab第3章 单元数组与结构数组ppt课件_第1页
matlab第3章 单元数组与结构数组ppt课件_第2页
matlab第3章 单元数组与结构数组ppt课件_第3页
matlab第3章 单元数组与结构数组ppt课件_第4页
matlab第3章 单元数组与结构数组ppt课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 单元数组与结构数组,3.1 字符串数组,3.2 单元数组,3.3 结构数组,3.4 综合实例,3.1 字符串数组,3.1.1 串数组的生成,1直接输入法 直接用单引号输入,例如: Book=MATLAB 7.14 (R2012a)基础 显示的结果为: Book = MATLAB 7.14 (R2012a)基础,若在单引号外加大括号也可以显示字符串,例如: S=数组计算 S = 数组计算 从结果来看,显示的内容有单引号标示,而单引号法显示的却只是文本。,2利用命令disp法 格式 disp(S) %S是字符串,显示出S的文本 例如: disp(Book) 显示的结果为: MATLAB 7

2、.14 (R2012a)基础,3利用命令char法 格式 char(S) %S是字符串,显示出S的文本 例如: char(MATLAB工具箱) ans = MATLAB工具箱,首页,4利用命令input法 格式 input(out,in) %显示出字符串out的文本并等待终端的输入,in可缺省 如果变量in是s,则输入的内容以字符串的形式进行保存。,例如,在命令窗口中输入: x=input(Give a number x:) 显示的结果为: Give a number x: 然后在“x::”的后面输入一个数,不妨为6,回车即得: x = 6 此时数值6以变量x的形式显示在Workspace工作

3、空间内。,若执行如下命令: x=input(Give a number x:,s) Give a number x:6 x = 6 此时数字6以字符串的形式保存在Workspace工作空间内。,5在字符串中用两个单引号来表示一个单引号 Its a reference book. ans = Its a reference book.,3.1.2 串数组的访问和大小,1串数组的访问 字符串的存储是按其中字符逐个顺序单一存放的,且存放的是字符的内部代码ASCII码。当在屏幕上显示字符变量的值时,显示出来的是文本,而不是ASCII数字。由于字符串是以向量的形式来存储的,所以可以通过它的下标对字符串中

4、的任何一个元素进行访问。 例如,对上面定义的字符串Book,输入命令: Book(14:19) ans = R2012a,3字符串的查找 在字符串中寻找某个字符串可用函数findstr来实现。 格式 findstr(S1,S2) %S1、S2都为字符串,表示在较长的字符串中 查找较短的字符串出现的次数,并返回其位置,2字符串的长度 一个字符串的长度可用length和size函数来确定大小。例如: length(Book) ans = 22 size(Book) ans = 1 22,例如,在上面定义的字符串Book中查找A所在的位置: findstr(Book,A) ans = 2 5 fin

5、dstr(A,Book) ans = 2 5 注:字符串和要查找的字符串的位置可以互换,结果相同。因此,无论S1、S2哪个为长字符串,位置在前在后都没有关系。,3.1.3 多行串数组的创建,首页,1多行串数组的直接输入 字符串数组可以是多行多列的数组,但必须保证每一行都有相同的列数。若字符串长度不一样,需要用空格填充,保证所有行的长度都相同。例如: S1=This string array;has two rows. %使用矩阵产生法,第二行后面需加4个空格 S1 = This string array has two rows.,2利用串操作函数创建多行串数组 利用函数char、strvca

6、t 创建多行串数组,每行的字符串长度可以不同。例如: S1=char(This string array,has two rows.) S1 = This string array has two rows. S2=strvcat(创建,多行,字符串数组) S2 = 创建 多行 字符串数组,1字符串转换成矩阵 将字符串转换成矩阵的函数为str2mat。例如: S=数值,字符串,2012年6月 M=str2mat(S) S = 数值 字符串 2012年6月 M = 数值 字符串 2012年6月,3.1.4 字符串数组的转换,2字符串与数值的转换 利用str2num和num2 str实现字符串与数

7、值的相互转换。例如: X=1:9; S=num2str(X) S = 1 2 3 4 5 6 7 8 9,注:虽然S的显示结果与X看上去一样,但其含义不同。X是数组,S是字符串。同样字符串可以转化为数组,例如:, S=11 22;33 44 S = 11 22 33 44 X=str2num(S) X = 11 22 33 44,3.2 单元数组,首页,3.2.1 单元数组的创建,1使用大括号 直接创建 例如: A=Command ,Workspace;Current Directory,History A = Command Workspace Current Directory Histo

8、ry,2对细胞元素直接赋值创建 【例3-1】创建一个学生的各科成绩单元数组。 S1,1=语文; S1,2=数学; S1,3=外语; S1,4=物理; S1,5=化学; S1,6=生物; S2,1=102; S2,2=125; S2,3=130; S2,4=86; S2,5=82; S2,6=80; S,3利用函数cell创建一个大小合适的空矩阵 格式 cell(m,n) %创建一个mn的空细胞矩阵,矩阵所有行必须要有相同的细胞数,首页,运行结果如下: S = 语文 数学 外语 物理 化学 生物 102 125 130 86 82 80,注:该方法首先使用cell函数定义一个单元数组,此时,由于

9、数组的各个元素还没有定义,因此,所显示的单元数组中元素都用空阵 来表示。然后,依次输入单元数据中各个元素的值,可以发现,每输入一个值,用相应的值代替空阵。,3.2.2 单元数组的显示,首页,1celldisp函数 格式 celldisp(cell) %逐个显示cell的每个元素的值 例如,对【例3-2】中的数组B,执行命令: celldisp(B) 显示的结果如下: B1,1 = matrix B2,1 = 1234 5678 B1,2 = laboratory B2,2 = Tollboxs B1,3 = MATLAB B2,3 = 7.14 2012(a),2cellplot函数 格式 c

10、ellplot(B) %用彩色的图形来显示单元型变量B的结构形式,例如,对【例3-2】中的数组B,继续执行命令: cellplot(B) 显示结果如图3-1所示。,首页,图3-1 单元型变量的结构,实际上,B1相当于B1,1;B2相当于B2,1;B3相当于B1,2,等等。注意使用大括号与小括号的不同,大括号是用于标示单元而不考虑这些单元的值,而小括号用于寻址单元的值。,3.2.3 单元数组的内容获取,为了获取单元数组中一个单元的值,只需使用大括号。如对【例3-2】中的数组B,执行命令: B1 ans = matrix B2 ans = 1234 5678 B3 ans = laboratory

11、,例如: B(1) ans = matrix B(2) ans = 2x4 char,首页,MATLAB的单元数组在进行统计分析时,不能直接使用计算统计量的函数,而必须将单元数组中单元的数值转化成数值向量,随后进行数值计算。,3.2.4 单元数组的数据处理,首页,例如,对【例3-1】中形成的数组,计算这个学生考试的总分。 由于数组C的显示结果为: C = 语文 数学 外语 物理 化学 生物 102 125 130 86 82 80,运行结果如下: X = 102 125 130 86 82 80 ans = 605,若直接对C的第2行求和,命令窗口显示出错。这时需将单元数组转化成数值数组,具体

12、程序如下: for i=1:6 X(i)=C2,i; %将单元数组C的第二行第i列的内容赋于数值数组X end X, sum(X) %显示数组X及考试总分,3.3 结构数组,首页,1直接输入法 在给结构数组中元素直接赋值的同时定义该元素的名称,并使用“.”将结构变量名与元素名连接。,格式 struct_name(record#).field_name=data,%创建将数据data直接赋值给变量名,struct_name(record#)和元素名,field_name的结构数组,说明 创建11的结构数组时可省略记录号(record#)项,【例3-3】 建立学生档案的小型数据库。 student

13、.test=90 86 82 88 92 75 80; =zhaohua; student.sex=F; student.age=20;, student.num=20110501; student.add=qd uinversity; student.tel student,运行结果如下,student = test: 90 86 82 88 92 75 80 name: zhaohua sex: F age: 20 num: 20110501 add: qd uinversity tel:我们可以继续添加其他学生数

14、据的结构变量,只需要加记录号即可: student(2).test=92 87 85 81 90 78 82; student(2).name=yangping; student(2).sex=M; student(2).age=22; student(2).num=20110502; student(2).add=qd uinversity; student(2).tel,我们可以继续添加其他学生数据的结构变量,只需要加记录号即可: student(2).test=92 87 85 81 90 78 82; student(2).name=yangping; stu

15、dent(2).sex=M; student(2).age=22; student(2).num=20110502; student(2).add=qd uinversity; student(2).tel,此时输入student,将只得到该结构的成员变量名而不显示内容: student student = 1x2 struct array with fields: test name sex age num add tel,可以继续在命令窗口中查询student的具体内容: student(1) %系统将开始的student默认为student(1) ans = t

16、est: 90 86 82 88 92 75 80 name: zhaohua sex: F; age: 20; num: 20110501 add: qd uinversity tel: student(2) ans = test: 92 87 85 81 90 78 82 name: yangping sex: M; age: 22; num: 20110502 add: qd uinversity tel:2使用struct函数生成结构数组,格式 S=struct(field1,V1, field2,V2,) % field为各成员变量

17、名,V为对应的各成员 变量的内容,返回结构数组S,【例3-4】用struct函数创建结构数组变量。 S =struct(city,beijing,shanghai,renkou,1500,1300) 运行结果如下: S = 1x2 struct array with fields: city renkou S.city ans = beijing ans = shanghai S.renkou ans = 1500 1300,3.3.2 结构数组的操作,1在结构数组中添加项 如果用户想在一个结构数组中添加其它项,直接按照生成格式输入即可。,【例3-5】 在学生数据库【例3-3】中的studen

18、t,若要添加元素项height和weight,只需输入: student(1).height=1.62 student(1).weight=54; student(2).height=1.82; student(2).weight=75; student %显示student的结构,首页,运行结果如下:,student = 1x2 struct array with fields: test name sex age num add tel height weight,首页,从上面的输出结果可知,在student中新添加了height和weight两项纪录,进而可显示:, student(1)

19、 ans = test: 90 86 82 88 92 75 80 name: zhaohua sex: F; age: 20; num: 20110501 add: qd uinversity tel:height: 1.6200 weight: 54, student(2) ans = test: 92 87 85 81 90 78 82 name: yangping sex: M; age: 22; num: 20110502 add: qd uinversity tel:height: 1.8200 weight: 75,2在结构数组

20、中删除项 格式 S=rmfield(S,fields) %将结构数组S中的fields项删去,仍用数组名S表示 说明 当fields是字符串或单元数组变量时,将一次性删除多项。 【例3-6】 对【例3-5】中结果,输入语句:,首页,首页, student=rmfield(student,weight) 运行结果如下: student = 1x2 struct array with fields: test name sex age num add tel height, student(1) ans = test: 90 86 82 88 92 75 80 name: zhaohua sex:

21、 F age: 20 num: 20110501 add: qd uinversity tel:height: 1.6200, student(2) ans = test: 92 87 85 81 90 78 82 name: yangping sex: M; age: 22; num: 20110502 add: qd uinversity tel:height: 1.8200,3在结构数组中调用元素项,结构数组中的任何信息,可以通过“结构体名称+元素项名称”的格式取出。 例如,对【例3-6】中结果,输入语句: student(1).tes

22、t ans = 90 86 82 88 92 75 80 student(1).test (4) ans = 88 student(2).test ans = 92 87 85 81 90 78 82 student(2).test(4) ans = 8,也可直接取出所有同学的姓名和分数,如执行命令: ans = zhaohua ans = yangping student.test ans = 90 86 82 88 92 75 80 ans = 92 87 85 81 90 78 82,3.3.3结构数组与单元数组的转换 格式 C=struct2cell(S) %

23、将结构数组S转化为单元数组C S=cell2struct(C) %将单元数组C转化为结构数组S,例如,在【例3-4】中创建的结构数组S,执行命令: C=struct2cell(S) C(:,:,1) = beijing 1x2 double C(:,:,2) = shanghai 1x2 double C=C(:,1),C(:,2) C = beijing shanghai 1x2 double 1x2 double,3.4 综合实例,单元数组和结构数组具有类似数据库功能,因此本章实例给出一个建立学生班级档案数组。由于对字符串也可以实施查找和计算长度,所以我们给出一个计算转移概率的方法,进而可

24、做一些市场预测。,3.4.1 建立学生班级档案数组,【例3-7】 现给出2011级机械班第一学期考试课程的任课教师和学生信息,如表3-1和表3-2所示。,表3-1 2011级机械班学生信息,表3-2 2011级机械班任课教师信息,试求:(1)建立任课教师和学生的结构数组teacher和student; (2)以建立的结构数组teacher和student为基础,再创建班级的细胞数组,并显示教师和学生的信息。,(1)创建学生结构数组 clear student(1).number=20110103001; student(1).name=赵凯; student(1).course=高等数学,大学

25、英语,计算机基础,机械制图; student(1).score=86 80 92 79; student(2).number=20110103002; student(2).name=王菲; student(2).course=高等数学,大学英语,计算机基础,机械制图; student(2).score=78 85 90 82; student(3).number=20110103003; student(3).name=刘洋; student(3).course=高等数学,大学英语,计算机基础,机械制图; student(3).score=88 80 95 90;,(2)创建教师结构数组 t

26、eacher(1).name=孙天宇; teacher(1).course=高等数学; teacher(2).name=刘梅芳; teacher(2).course=大学英语; teacher(3).name=王海涛; teacher(3).course=计算机基础; teacher(4).name=杨一凡; teacher(4).course=机械制图;,(3)创建班级单元数组 class=cell(1,2); class1,1=student; class1,2=teacher;,(4)显示单元数组结构 celldisp(class) 运行结果如下: class1 = 1x3 struct

27、 array with fields: number name course score class2 = 1x4 struct array with fields: name cours,(5) 查询第一个学生信息 class1(1).name %查询第一个学生的姓名 class1(1).course %查询第一个学生学习课程 class1(1).score %查询第一个学生成绩 %查询开课教师姓名,运行结果如下: ans = 赵凯 ans = 高等数学 大学英语 计算机基础 机械制图 ans = 86 80 92 79 ans = 孙天宇 ans = 刘梅芳 ans = 王涛 ans = 杨一凡,3.4.2 股票价格走势预测,【例3-8】某人打算购买股票,选定某一只股票进行观察其价格变动情况,并进行记录。若当日收盘价格高于上一日的收盘价格,记为1,表示上升;否则

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论