ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:32.96KB ,
资源ID:4966354      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4966354.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验三MATLAB字符串元胞和构架数组.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验三MATLAB字符串元胞和构架数组.docx

1、实验三 MATLAB字符串元胞和构架数组实验三 字符串、元胞和构架数组 MATLAB 6.x版的内建数据类型(Built-in data type)就有5种以上,此外还有许多其他专门设计的类(Class),如符号类、内联函数类、控制工具包中的线性时不变模型类、神经网络类等。就程序设计而言,MATLAB 6.x版采用了面向对象编程技术。数据和编程的改变使用户能更简捷而自然地解决复杂的计算问题(如符号计算问题、多变量控制系统问题、神经网络问题)。本章内容根据MATLAB6.5编写,但绝大部分内容适用于其他MATLAB6.x版本。 第二章介绍了数值数组(Numeric Array),这是读者比较熟悉

2、的数据类型。本章将集中讲述另外三类数据:字符串数组(Character String Array)、元胞数组(Cell array)和构架数组(Structure array)。它们之间的基本差别见表3-1。表3-1 四种数据类型基本构成比较表数组类型基本组分组分内涵基本组分占用字节数数值数组元素双精度实数标量或双精度复数标量816字符串数组元素字符2元胞数组元胞可以存放任何类型、任何大小的数据。不定构架数组构架只有挂接在构架上的“域”才能存放数据。数据可以是任何类型、任何大小。不定3.1 字符串数组3.1.1 字符串入门【例3.1.1-1】先请读者实际操作本例,以体会数值量与字符串的区别。c

3、leara=12345.6789class(a) a_s=size(a) b=S class(b) b_s=size(b) whos 3.1.2 串数组的属性和标识【例3.1.2-1】本例演示:串的基本属性、标识和简单操作。(1)a=This is an example. (2)size(a) (3)a14=a(1:4) ra=a(end:-1:1) (4)ascii_a=double(a) char(ascii_a) (5)w=find(a=a&a=z);ascii_a(w)=ascii_a(w)-32;char(ascii_a) (6)A=这是一个算例。; A_s=size(A) A56=

4、A(5 6) ASCII_A=double(A) char(ASCII_A) (7)b=Example 3.1.2-1 (8)ab=a(1:7), ,b, . 3.1.3 复杂串数组的创建3.1.3.1 多行串数组的直接创建【例3.1.3.1-1】多行串数组的直接输入示例。clearS=This string array has multiple rows. size(S) 3.1.3.2 利用串操作函数创建多行串数组【例3.1.3.2-1】演示:用专门函数char , str2mat , strvcat创建多行串数组示例。S1=char(This string array,has two r

5、ows.) S2=str2mat(这,字符,串数组,由4行组成) S3=strvcat(这,字符,串数组,由4行组成) size(S3) 3.1.3.3 转换函数产生数码字符串【例3.1.3.3-1】最常用的数组/字符串转换函数int2str , num2str , mat2str 示例。(1)A=eye(2,4); A_str1=int2str(A) (2)rand(state,0)B=rand(2,4); B3=num2str(B,3) (3)B_str=mat2str(B,4) Expression=exp(-,B_str,);eval(Expression) 【例3.1.3.3-2】综

6、合例题:在MATLAB计算生成的图形上标出图名和最大值点坐标。cleara=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)hold onplot(t,y,b)plot(t(i_max),y_

7、max,r.,MarkerSize,20)text(t(i_max)+0.3,y_max+0.05,max_text) % title(tit),xlabel(t),ylabel(y),hold off 图 3.1-1 3.1.3.4 利用元胞数组创建复杂字符串【例3.1.3.4-1】元胞数组在存放和操作字符串上的应用。a=MATLAB 6.x ;b=includes new data types:;c1=Multidimensional array;c2=User-definable data structure;c3=Cell arrays;c4=Character array;c5=Fu

8、nction handle;c=char(c1,c2,c3,c4,c5);C=a;b;c; % disp(C1:2) % disp( ) %disp(C3) % 3.1.4 串转换函数【例3.1.4-1】fprintf, sprintf, sscanf的用法示例。rand(state,0);a=rand(2,2);s1=num2str(a)s_s=sprintf(%.10en,a) fprintf(%.5g,a) s_sscan=sscanf(s_s,%f,3,2) 3.1.5 串操作函数3.2 元胞数组3.2.1 元胞数组的创建和显示3.2.1.1 元胞标识寻访和内容编址寻访的不同3.2.1

9、.2 元胞数组的创建和显示【例 3.2.1.2-1】本例演示:元胞数组的创建。C_str=char(这是,元胞数组创建算例 1);R=reshape(1:9,3,3);Cn=1+2i;S_sym=sym(sin(-3*t)*exp(-t); (1)直接创建法之一A(1,1)=C_str;A(1,2)=R;A(2,1)=Cn;A(2,2)=S_sym;A (2)直接创建法之二B1,1=C_str;B1,2=R;B2,1=Cn;B2,2=S_sym;celldisp(B) 3.2.2 元胞数组的扩充、收缩和重组【例3.2.2-1】元胞数组的扩充。(1)C=cell(2); C(:,1)=char(

10、Another,text string);10:-1:1 (2)AC=A C A_C=A;C 【例3.2.2-2】cellplot能用图形形象化地表示元胞数组的内容。(A_C取自上例)cellplot(A_C,legend) 图 3.2-1 【例3.2.2-3】元胞数组的收缩和重组。(1)A_C(3,:)= (2)R_A_C=reshape(A_C,2,3) 3.2.3 元胞数组内容的调取【例3.2.3-1】元胞数组内容的调取示例。(1)f1=R_A_C(1,3) class(f1) (2)f2=R_A_C1,3 class(f2) (3)f3=R_A_C1,1(:,1 2 5 6) (4)f

11、4,f5,f6=deal(R_A_C1,3,4) 3.2.4 元胞数组转换函数【例3.2.4-1】常用元胞数组转换函示例。(1)num2cell 把数值数组转换成元胞数组rand(state,0);A=rand(2,3,2) C1=num2cell(A) C2=num2cell(A,1) C3=num2cell(A,2,3) (2) clear,x=zeros(4,5);x(:)=1:20 C4=mat2cell(x, 2 2, 3 2)celldisp(C4) (3)D=cell2mat(C4(1,:) 3.3 构架数组3.3.1 构架数组的创建和显示3.3.1.1 直接创建法及显示【例3.

12、3.1.1-1】本例通过温室数据(包括温室名、容积、温度、湿度等)演示:单构架的创建和显示。(1)green_house.name=一号房; % green_house.volume=2000立方米; % green_house.parameter.temperature=31.2 30.4 31.6 28.7 29.7 31.1 30.9 29.6;%green_house.parameter.humidity=62.1 59.5 57.7 61.5 62.0 61.9 59.2 57.5; % (2)显示“单构架”结构和内容green_house % green_house.paramet

13、er % green_house.parameter.temperature % 【例3.3.1.1-2】本例演示构架数组的创建和显示,并利用构架数组保存一个温室群的数据。本例的运行以例3.3.1.1-1为先导。(1)green_house(2,3).name=六号房; % (2)green_house % green_house(2,3) % 3.3.1.2 利用构造函数创建构架数组【例3.3.1.2-1】利用构造函数struct,建立温室群的数据库。(1)a=cell(2,3);green_house_1=struct(name,a,volume,a,parameter,a(1,2) %

14、(2)green_house_2=struct(name,a,volume,parameter,) % (3)green_hopuse_3(2,3)=struct(name,volume,parameter,)% (4)a1=六号房;a2=3200立方米;green_house_4(2,3)=struct(name,a1,volume,a2,parameter,);%T6=31.2,30.4,31.6,28.7;29.7,31.1,30.9,29.6; % green_house_4(2,3).parameter.temperature=T6; % green_house_4 3.3.2 构架

15、数组域中内容的调取和设置【例3.3.2-1】本例目的:一,演示函数fieldnames , getfield , setfield的使用方法;二,让读者感受到构架数组对应用工具包的影响;三,演示struct函数把“对象”转换为构架的应用。本例为获得一个演练的构架,借助Toolbox control 工具包中的tf函数,先产生一个用传递函数描写的LTI线性时不变2输入2输出系统。(1)Stf=tf(3,2;4 1,1,1 3 2,1 1 1;1 2 2 1,1 0) (2)SSTF=struct(Stf) (3)FN=fieldnames(SSTF)class(FN) (4)FC=getfiel

16、d(SSTF,den,2,1)FC1poly2str(FC1,s) (5)SSTF.num2,1SSTF=setfield(SSTF,num,2,1,1 3 1);SSTF.num2,1 3.3.3 构架数组操作深入3.3.3.1 构架数组的扩充和收缩【例3.3.3.1-1】本例演示构架数组SSTF的扩充和收缩。(本例以例3.3.2-1的运行为基础。)(1)size(SSTF) (2)SSTF(2,2)=struct(tf(1,1 1)size(SSTF) (3)SSTF(1,:)=S22n=SSTF(1,2).num,S22d=SSTF(1,2).denprintsys(S22n1,S22d

17、1) 3.3.3.2 增添域和删除域【例3.3.3.2-1】对构架数组green_house进行域的增添和删减操作。(1)clear,for k=1:10;department(k).number=No.,int2str(k);enddepartment (2)department(1).teacher=40;department(1).student=300;department(1).PC_computer=40;department (3)department(2).teacher.male=35;department(2).teacher.female=13;D2T=departmen

18、t(2).teacher %第2构架teacher域包含两个子域D1T=department(1).teacher %第1构架teacher域仅是一个数 (4)department(2).teacher=rmfield(department(2).teacher,male);department(2).teacher (5)department=rmfield(department,student) department=rmfield(department,teacher;PC_computer) 3.3.3.3 数值运算操作和函数对构架数组的应用【例3.3.3.3-1】数值运算操作和函数在

19、构架域上的作用。n_ex=5;for k=1:n_ex, ex(k).f=(k-1)*n_ex+1:5;end ex %disp(blanks(10) 构架域中内容)for k=1:n_ex,disp(ex(k).f),end class(ex(1).f) %sum_f=zeros(1,5);for k=1:n_ex,sum_f=sum_f+ex(k).f;end,sum_f %disp(blanks(20) ex.f的平方根值)for k=1:n_ex, disp(sqrt(ex(k).f),end 3.3.4 构架数组和元胞数组之间的转换【例3.3.4-1】指令struct2cell和ce

20、ll2struct的使用。(1)for k=1:5,ex(k).s=No. int2str(k);ex(k).f=(k-1)*5+1:5;end (2)fprintf(%sn,ex.s域的内容 );fprintf(%s,blanks(4)for k=1:5;fprintf(%s,ex(k).s blanks(1);endfprintf(%sn,blanks(1),fprintf(%sn,ex.f域的内容 )for k=1:5;disp(ex(k).f);end (3)C_ex=struct2cell(ex);size(C_ex)fprintf(%s,C_ex1,1,1,blanks(3)fpr

21、intf(%5g,C_ex2,1,1) (4)FS=S_char;F_num; EX1=cell2struct(C_ex,FS,1) EX1(1) (5)EX2=cell2struct(C_ex,xx,2) (6)YY=strvcat(y1,y2,y3,y4,y5);EX3=cell2struct(C_ex,YY,3) EX3(1) EX3(2) 【例3.3.4-2】带子域的构架数组转换为元胞数组。 本例中的ex构架数组由例3.3.4-1生成,然后再运行以下程序。ex(1,1).s %ex(1,1).s.sub=SUB 1;ex(3,1).s.sub=SUB 3;ex(3,1).s.num=1/3; ex(1,1).s ex(3,1).s C_ex_sub=struct2cell(ex) size(C_ex_sub) C_ex_sub1,1,1 C_ex_sub1,3,1 3.4 关于数据类型的归纳性说明

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1