《《数组与结构》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数组与结构》PPT课件.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章章 数组与结构陈英义陈英义中国农业大学中国农业大学 信息与电气工程学院信息与电气工程学院Email: Tel:62737994信电大楼信电大楼543教学目标本章将介绍三种特殊的数据类型,即字符串、单元数组和结构。使用这三种数据类型,相关的数据可以通过一个单元数组或是结构进行组织和访问,数据的管理就变得要容易一些。教学重点字符串的设定和操作单元数组的操作结构型变量的操作1.字符串的设定MATLAB 对字符串的设定非常简单,只需用单引号()将需设定的字符串引注即可。str=I have many good friends!str=I have many good friends!Name
2、Size Bytes Class Attributes str 1x25 50 char 2.字符串的操作 字符串元素的读取 字符串的基本变换 字符串的运算 字符串元素的读取字符串元素的读取 利用数组操作工具进行读取 使用disp函数显示字符串 str=今天,是2009年4月24日晚上,我们班一起上MATLAB课。str=今天,是2009年4月24日晚上,我们班一起上MATLAB课。str(6)ans=0(2)常见字符串的操作 函 数 名函 数 用 途函 数 名函 数 用 途strcat链接字符串strvcat垂直链接字符串strcmp比较字符串大小strncmp比较字符串的前n个字符find
3、str在其他的字符串中寻找该字符串strjust证明字符数组strmatch查找可能匹配的字符串strrep用其他字符串代替改串strtok查找字符串中的记号blanks生成空的字符串deblank删除字符串内的空格ischar字符串检验iscellstr字符串的单元检验isletter字母检验isspace空格检验stringsstrings函数的帮助(3)字符串的运算字符串的运算主要是指判断字符串是否相等,通过字符的运算来比较字符,字符串中字符的分类、查找与替换、字符串与数值的转换和数组与字符串的转换等。判断字符串是否相等 有两个函数可以用来判断两个输入的字符串是否相等。strcmp函数:
4、比较两个字符串是否相等,当相等时,系统将返回值1,不相等时,返回值0;strncmp函数:比较两个输入字符串的前几个字符是否相等,当相等时,系统将返回值1,不相等时,返回值0。words1=人民文学;words2=人民的同志;N=strcmp(words1,words2)N=0 Y=strncmp(words1,words2,3)Y=0 x=strncmp(words1,words2,1)x=1 通过字符的运算比较字符 运算符号的意义符 号 形 式符 号 意 义英 文 简 写=等于eq=不等于ne大于gt=大于或等于ge字符串中字符的分类 字符串中的字符通常可以分为空白字符、字母字符和其他类型
5、的字符。用户可以用isletter和isspace两个函数来对字符串中的字符进行分类。realstring=realstring=A=isspace(realstring)A=0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1.查找与替换 查找与替换是字符串操作中的一项重要内容,MATLAB 语言提供了findstr、strfind和strrep等函数来实现查找与替换操作。s1=我们班的班长是是赵洁!;s2=strrep(s1,赵洁,黄远)s2=我们班的班长是是黄远!s3=strrep(s2,黄远!,谁?)s3=我们班的班长是是谁?字符串与数值的转换 常见的字符
6、串转换函数函 数功 能函 数功 能hex2dec将16进制字符串转化为10进制整数dec2hex将10进制整数转化为16进制字符串bin2dec将2进制字符串转化为10进制整数dec2bin将10进制整数转化为2进制字符串base2dec转化B底字符串为10进制整数hex2num将16进制字符转化为双精度数upper改该字符串为大写lower改该字符串为小写fprintf把格式化的文本写到文件中或显示屏上sprintf用格式控制,数字转换成字符串sscanf用格式控制,字符串转换成数字charASCII码转换成字符串num2str数字转换成字符串int2str整数转换成字符串字符串与数值的转换
7、举例使用str2num函数将字符型矩阵转换为数字矩阵 S=1 2 ;3 4 S=%S为字符型矩阵1 23 4 X=str2num(S)X=%X为数字型矩阵 1 2 3 42.单 元 数 组 直接生成单元数组 使用cell函数生成单元数组 单元数组的内容的显示或获取 单元数组的变维处理(1)直接生成单元数组用类似矩阵的记号将给复杂的数据结构纳入一个变量之下。单元数组和数值数组的区别是单元数组不受维数的限制。和矩阵中的圆括号表示下标类似,单元数组由大括号表示下标。A=我要上课,Wind Gone,100+200*i,90,85,55;67,70,102;57,18,100;-200,89,78A=
8、Columns 1 through 3 反对霸权 Wind Gone 1.0000e+002+2.0000e+002i Column 4 4x3 double(2)使用cell函数生成单元数组应用举例:A=cell(2,2)A=A1,1=富强 民主;文明 廉洁A=2x4 char (3)单元数组的内容的显示或获取celldisp(A,Huang)Huang1,1=富强民主文明廉洁 Huang2,1=Huang1,2=Huang2,2=(4)单元数组的变维处理 前边所述的对矩阵的变维处理同样也适用于对单元数组的变维处理。此外还可以使用reshape函数进行操作。A=1 2;3 4,love;上课
9、别睡觉,90,85,55;67,70,102;57,18,100;-200,89,78A=2x2 double love 上课别睡觉 4x3 double a=reshape(A,1,4)a=2x2 double 上课别睡觉 love 4x3 double 3.结构型变量直接输入法生成结构型变量使用struct函数生成结构型变量 在结构体变量中添加成员变量 在结构体变量中删除成员变量 在结构体变量中调用成员变量 getefield和setfield函数的使用(1)直接输入法生成结构型变量 student.test=99 56 96 87 67 69 87 76 92;student.name=
10、Wang Wu;student.weight=68;student.height=1.72;student.num=2008214091;student.add=China agricultural university;student.tel=138*;(2)使用struct函数生成结构型变量 struct_array=struct(d,北京,上海,strengths,40000 1000)struct_array=d:北京 上海 strengths:40000 1000(3)在结构体变量中添加成员变量 student(1).gender=Male;%在student中添加gender和ag
11、e这2项记录 student(1).age=25;student(2).gender=Female;student(2).age=21;student%查询student的结构student=1x2 struct array with fields:test name weight height num add tel gender agestudent(1)student(2)(4)在结构体变量中删除成员变量 使用函数rmfifld从结构体变量中删除成员变量。student=rmfield(student,age);student=1x2 struct array with fields:t
12、est name weight height num add tel gender(5)在结构体变量中调用成员变量 student(1).test%从结构体变量中取出相关信息ans=99 56 96 87 67 69 87 76 92 student(1).test(5)ans=67 student(1).addans=China agricultural university(6)getfield和setfield函数的使用getfield函数取得当前存储在某个成员变量中的值。setfield函数给某个成员变量插入新的值。GETF=getfield(student(1),add)GETF=China agricultural universitySETF=setfield(student(1),add,College of Information&Electronic Engineering)SETF=test:99 56 96 87 67 69 87 76 92 name:Wang Wu weight:68 height:1.7200 num:2.0082e+009 add:College of Information&Electronic Engineering tel:1381042*gender:Male