您好,欢迎访问三七文档
第三章、其它数组类型——字符串数组、元胞数组及构架数组内容提要:1、字符串数组。2、元胞数组。3、构架数组。3.1字符串数组clear%清除所有内存变量a=123.456789%给变量a赋数值标量class(a)%对变量a的类别进行判断a_s=size(a)%数值数组a的大小b='S'%给变量b赋字符标量(即单个字符)class(b)%对变量b的类别进行判断b_s=size(b)%符号数组b的大小whos%观察变量a,b在内存中所占字节问题:1、size指令的使用方法。2、在workspace窗口中变量ans的大小是1×4为什么不是1×6?3.1字符串数组主要内容:1、串数组的属性和标识。2、复杂串数组的建立。3、串转换函数。4、串操作函数。1)串数组的创建。2)串数组的大小。3)串数组的元素标识。4)串数组的ASCII码表示。5)中文字符串。6)创建带单引号的字符串。7)有小串构成长串。3.1.1串数组的属性和标识串数组的创建:在指令窗中,先把待建的字符放在“单引号对”中,再按回车键。例(串数组的大小)A=‘Thisisaprogramme.’size(A)注意:在字符串数组中每个字符(英文字母、标点、空格都是平等的)占据一个元素的位置。3.1.1串数组的属性和标识例:A=‘Thisisaprogramme.’size(A)B=A(1:8)C=A(end:-2:1)D=A([67])B=ThisˇisˇD=is3.1.1串数组的属性和标识Y=char(X)X=double(Y)A=‘Thisisaprogramme.’B=double(A)D=char(B)作用:将字符数组A转化成其ASCII码。作用:将B中以字符ASCII表示的值转换成相应的字符。3.1.1串数组的属性和标识例:A=‘这是一部好电影!’B=size(A)C=double(A)D=char(A)E=char(C)3.1.1串数组的属性和标识A=It‘sagoodbook.A=‘It‘sagoodbook.’RightorWrong?3.1.2复杂串数组的创建1、复杂串数组的直接创建。2、利用串操作函数创建复杂串数组。3、利用转换函数产生数码字符串。Charstr2matstrvcat3.1.2复杂串数组的创建3.1.2复杂串数组的创建S=char(t1,t2,t3,…)说明:其中t1、t2、t3为字符串行数组,S是由t1、t2、t3…为行构成的二维字符串数组,其尺寸取中的最长者。其它字符行阵列在末尾补空格,使所有行阵列等长。3.1.2复杂串数组的创建功能:字符串的垂直连接。s1=str2mat(‘This’,’is’,’anexample!’)s2=strvcat(‘This’,’is’,’anexample!’)3.1.2复杂串数组的创建将整数数组转化为串数组A=ones(3)B=int2str(A)a=eye(2,5)b=int2str(a)3.1.2复杂串数组的创建将非整数数组转换成串数组。将数值数组转换成输入形态的串数组。例题开讲:例题开讲: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')holdonplot(t,y,'b')plot(t(i_max),y_max,'r.','MarkerSize',20)text(t(i_max)+0.3,y_max+0.05,max_text)title(tit),xlabel('t'),ylabel('y'),holdon%找出最大值元素的位置%生成最大值点的坐标字符串%由char指令生成多行字符串例题开讲:rand('state',0);a=rand(2,2);s1=num2str(a)s_s=sprintf('%.10e\n',a)fprintf('%.5g\\',a)s_sscan=sscanf(s_s,'%f',[3,2])%把数值数组转换为串数组%科学记述串,每写一个元素就换行。%以5位数位最短形式显示。不能赋值用%浮点格式把串转换成成数值数组。其它的串转换函数和串操作函数参阅教材表2.73.2元胞数组主要内容:1、元胞数组的创建和显示。2、元胞数组的扩充、收缩和重组。3、元胞数组内容的调取。3.2元胞数组说明:1)元胞数组的基本组分是:元胞(cell)。2)每个元胞在数组中的地位是平等的,只以下标区分,有单下标编制和全下标编制两种方法。3)元胞中可以存放任何类型、任何大小的数据。4)同一元胞数组中各个元胞的内容可以不同。注意:1)寻访元胞:A(1,2)2)寻访元胞中的内容:A{1,2}3.2.1元胞数组的创建和显示创建方法:1)外标识元胞元素赋值。2)编址元胞元素内涵的直接赋值法。3)利用指令cell建立元胞数组。clearC_str=char('这是','元胞数组');%产生字符串R=reshape(1:9,3,3);%产生实数阵RCn=[1+2i];%产生复数标量S=rand(2,3);%产生随机数数组%(1)创建法一:外标识元胞元素赋值法A(1,1)={C_str};A(1,2)={R};A(2,1)={Cn};A(2,2)={S};A%显示元胞数组(2)创建法二:编址元胞元素内涵的直接赋值法B{1,1}=C_str;B{1,2}=R;B{2,1}=Cn;B{2,2}=S;celldisp(B)功能:显示元胞数组的内容。(3)创建法三:利用cell指令创建Y=cell(x1,x2,…)3.2.2元胞数组的扩充、收缩和重组3.2.2元胞数组的扩充、收缩和重组元胞数组的列扩充元胞数组的行扩充。3.2.2元胞数组的扩充、收缩和重组cellplot(B)功能:形象的显示元胞数组的内容cellplot(D,’legend’)3.2.2元胞数组的扩充、收缩和重组E=reshape(D,2,3)3.2.3元胞数组内容的调取3.2.3元胞数组内容的调取3.3构架数组主要内容:1、构架数组的直接创建及显示。2、利用构造函数struct创建构架数组。3.3构架数组说明:1)构架数组的基本组成单元是:构架。2)构架必须在划分域后才能使用。3)数据不能直接存放于构架,只能存放在域中。4)构架的域可以存放任何类型、任何大小的数组。5)不同构架的同名域中存放的内容可以不同。3.3.1构架数组的直接创建及显示单构架数组的创建和显示。3.3.1构架数组的直接创建及显示只能得到该构架的结构信息。当键入不带子域的构架域名时,可直接显示该域的内容。3.3.1构架数组的直接创建及显示若键入带子域的构架域名,则显示子域的结构信息。3.3.1构架数组的直接创建及显示3.3.2利用构造函数struct创建构架数组例:Patient1=struct('name','John','billing',127,'test',[797573;180178176;220210205])3.3.2利用构造函数struct创建构架数组例:n={'John''Ann''Alan'}n='John''Ann''Alan'b=[12328.598.5]b=123.000028.500098.50003.3.2利用构造函数struct创建构架数组t1=[797573;180178177;220210205];t2=[687068;118118119;172170169];t3=[373836;119121120;165166159];patient2=struct('name',n,'billing',b,'test',{t1t2t3})3.3.2利用构造函数struct创建构架数组例:s=struct('type',{'big','little'},'color',{'red'},'x',{3,4})a={'big','little'}b={'red'}c={3,4}3.3.2利用构造函数struct创建构架数组Struct功能:建立构架数组。格式:s=struct(‘field1’,values1,’field2’,values2,…)说明:上述指令可以建立指定域名及其值的构架数组,值阵列必须是相同尺寸的单元阵列或标量单元。总结:四种数据类型基本构成比较表
本文标题:matlab第三章
链接地址:https://www.777doc.com/doc-7027892 .html