第3章《Matlab软件基础及应用》

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第三章字符串数组和结构数组3.1字符串数组3.1.1字符串入门【例3.1-1】数值量与字符串的区别。cleara=12345.6789class(a)%对变量a的类别进行判断a_s=size(a)a=1.2346e+004ans=doublea_s=11b='S'class(b)%对变量a的类别进行判断b_s=size(b)b=Sans=charb_s=11whosNameSizeBytesClassa1x18doublearraya_s1x216doublearrayans1x48chararrayb1x12chararrayb_s1x216doublearrayGrandtotalis10elementsusing50bytes3.1.2串数组的属性和标识【例3.1-2】串的基本属性、标识和简单操作。(1)创建串数组a='Thisisanexample.'a=Thisisanexample.2(2)串数组的大小size(a)ans=119(3)串数组的元素标识a14=a(1:4)ra=a(end:-1:1)a14=Thisra=.elpmaxenasisihT(4)串数组的ASCII码用指令abs,double把串数组转化成ASCII码,char()则把ASCII码转换成串说组ascii_a=double(a)ascii_a=Columns1through128410410511532105115329711032101Columns13through191209710911210810146ascii_a2=abs(a)ascii_a2=84104105115321051153297110321011209710911210810146ascii_a3=char(a)ascii_a3=Thisisanexample.char(ascii_a)ans=Thisisanexample.(5)对字符串ASCII码的操作w=find(a='a'&a='z');%找出串数组a中小写字母的位置3ascii_a(w)=ascii_a(w)-32;%大小写字母ASCII码值差32,用数值加法改变部分码值char(ascii_a)%把新的ASCII码翻译成字符ans=THISISANEXAMPLE.(6)中文字符串数组A='这是一个算例。';A_s=size(A)A56=A([56])ASCII_A=double(A)A_s=17A56=算例ASCII_A=Columns1through6547545191153947473505219549405Column741379char(ASCII_A)ans=这是一个算例。(7)创建带单引号的字符串b='Example''3.1.2-1'''b=Example'3.1.2-1'ab=[a(1:7),'',b,'.']ab=ThisisExample'3.1.2-1'.3.1.3复杂串数组的创建一多行串数组的直接创建4【例3.1-3】多行串数组的直接输入示例。clearS=['Thisstringarray''hasmultiplerows.']S=Thisstringarrayhasmultiplerows.size(S)ans=218二利用串操作函数创建多行串数组【例3.1-4】用专门函数char,str2mat,strvcat创建多行串数组示例。S1=char('Thisstringarray','hastworows.')S1=Thisstringarrayhastworows.S2=str2mat('这','字符','串数组','由4行组成')S2=这字符串数组由4行组成S3=strvcat('这','字符','串数组','','由4行组成')S3=这字符串数组由4行组成size(S3)ans=55三转换函数产生数码字符串【例3.1-5】最常用的数组/字符串转换函数int2str,num2str,mat2str示例。A=eye(2,4);%生成一个(2*4)数值数组A_str1=int2str(A)%转换成串数组A_str1=510000100B=rand(2,4);%生成数值矩阵B3=num2str(B,3)%保持3位有效数字B3=0.950.6070.8910.4560.2310.4860.7620.0185B_str=mat2str(B,4)%保持4位有效数字,转化为数组输入形式B_str=[0.95010.60680.89130.4565;0.23110.4860.76210.0185]【例3.1-6】综合例题:在MATLAB计算生成的图形上标出图名和最大值点坐标。clear%清除内存得所有变量a=2;w=3;t=0:0.01:10;%取自变量采样数y=exp(-a*t).*sin(w*t);%计算函数值,产生函数数组[y_max,i_max]=max(y);%找出最大元素位置t_text=['t=',num2str(t(i_max))];%生成最大值点的横坐标字符串y_text=['y=',num2str(y_max)];%生成最大值点的坐标字符串max_text=char('maximum',t_text,y_text);%生成最大值点的横坐标字符串tit=['y=exp(-',num2str(a),'t)*sin(',num2str(w),'t)'];%生成表示图名得字符串plot(t,zeros(size(t)),'k')%画纵坐标为0的基准线holdon%保持绘制的线不被清除plot(t,y,'b')%用兰色画y(t)曲线plot(t(i_max),y_max,'r.','MarkerSize',20)%用大红点标最大值text(t(i_max)+0.3,y_max+0.05,max_text)%6在图上书写最大值点的数据值title(tit),xlabel('t'),ylabel('y'),holdoff%书写图名、横坐标和纵坐标0246810-0.100.10.20.30.40.50.6maximumt=0.33y=0.4321y=exp(-2t)*sin(3t)ty图3.1-1字符串运用示意图3.2结构数组3.2.1结构数组的直接创建法及显示【例3.2-1】本例通过温室数据(包括温室名、容积、温度、湿度等)演示:单结构的创建和显示。green_house.name='一号房';green_house.volume='2000立方米';green_house.parameter.temperature=[31.230.431.628.729.731.130.929.6];green_house.parameter.humidity=[62.159.557.761.562.061.959.257.5];green_house%显示结构体的内容green_house=name:'一号房'volume:'2000立方米'parameter:[1x1struct]green_house.parameterans=temperature:[2x4double]7humidity:[2x4double]green_house.parameter.temperatureans=31.200030.400031.600028.700029.700031.100030.900029.6000【例3.2-2】建立学生档案结构体,包含下列信息:编号(用number表示,在结构体下number又称为结构体的成员变量或结构体的域),数值型姓名(name),字符型身高(height):数值型考试成绩(test):矩阵,其第i行为第i次考试成绩,而第j列为第j门考试成绩。student_rec.number=1student_rec.name='张三'student_rec.height=180student_rec.test=[1008075;776092672890;1008978]student_rec=number:1student_rec=number:1name:'张三'student_rec=number:1name:'张三'height:180student_rec=number:1name:'张三'height:180test:[4x3double]下面的指令建立一组100个学生(假设2个年级,每个年级50人)的新的结构体变量BB(50,2)=struct(student_rec)%构造50×2结构体B=50x2structarraywithfields:numbernameheighttestB=50x2structarraywithfields:numbername8heighttest如果想给B变量加一个成员变量——体重(weight),则可以将结构体中任一个变量后面加weight成员变量即可,如:B(1,10).weight=90%添加成员变量weightB=50x10structarraywithfields:numbernameheighttestweight如果想消除结构体变量中的任何一个成员变量,则可用指令rmfield()函数来完成。如:B=rmfield(B,'weight')%删除成员变量weightB=50x10structarraywithfields:numbernameheighttest3.3单元(cell)结构MATLAB从5。0版起引入了一种新的数据结构——单元(cell)结构,该结构把不同属性的数据都纳入到一个变量之下,这个变量就称为单元。例3.3-1】建立学生档案单元B,包含下列信息:编号姓名身高考试成绩。B={1,'zhangsan',180,........9[1008075;776092;672890;1008978]}B=[1]'zhangsan'[180][4x3double]size(B)B{4}%显示第4单元内容可以用指令celldisp()函数来直接显示整个单元,如:celldisp(B)%显示整个单元变量B{1}=1B{2}=zhangsanB{3}=180B{4}=10080757760926728901008978

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功