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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

matlab中使用结构体Word文件下载.docx

1、一号温室 % 创建温室名字段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 =name: volume:parameter: 1x1 st

2、ructgreen_house.parameter % 用域作用符号. 显示指定域(parameter)中内容temperature: 2x4 doublehumidity: 2x4 doublegreen_house.parameter.temperature % 显示temperature域中的内容ans =31.2000 30.4000 31.6000 28.700029.7000 31.1000 30.9000 29.6000【例4.3.1-2】在上例的基础上,创建结构数组用以保存一个温室群的数据。green_house(2,3).name = 六号温室 %产生23结构数组green_

3、house % 显示结构数组的结构2x3 struct array with fields:namevolumeparametergreen_house(2,3) % 显示结构数组元素的结构 2. 使用struct函数创建结构使用struct函数也可以创建结构,该函数产生或吧其他形式的数据转换为结构数组。struct的使用格式为:s = sturct(field1,values1,field2,values2,);该函数将生成一个具有指定字段名和相应数据的结构数组,其包含的数据values1、valuese2等必须为具有相同维数的数据,数据的存放位置域其他 结构位置一一对应的。对于struct

4、的赋值用到了元胞数组。数组values1、values2等可以是元胞数组、标量元胞单元或者单个数值。每个 values的数据被赋值给相应的field字段。当valuesx为元胞数组的时候,生成的结构数组的维数与元胞数组的维数相同。而在数据中不包含元胞的时候,得到的结构数组的维数是11的。s = struct(type,big,little,colorblueredx,3,4)s =1x2 struct array with fields:typecolorx得到维数为12的结构数组s,包含了type、color和x共3个字段。这是因为在struct函数中、和3,4都是12的元胞数组,可以看到两

5、个数据成分分别为:s(1,1)type:color:x: s(1,2) 4相应的,如果将struct函数写成下面的形式:,3;4)2x1 struct array with fields:则会得到一个21的结构数组。下面给出利用struct构建结构数组的具体实例。【例4.3.1-3】利用函数struct,建立温室群的数据库。(1) struct预建立空结构数组方法之一a = cell(2,3); % 创建23的元胞数组green_house_1=struct(name,a,volumeparameter,a(1,2)green_house_1 =(2)struct预建空结构数组方法之二gree

6、n_house_2=struct(,)green_house_2 =(3)struct预建空结构数组方法之三green_hopuse_3(2,3)=struct(green_hopuse_3 =(4)struct创建结构数组方法之四a1=六号房;a2=3200立方米green_house_4(2,3)=struct(,a1,a2,);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_44. 3.2 结构数组的操作MATLAB中专门用于对结构数组的

7、操作的函数并不多,通过 help datatypes获取数据类型列表,可以看到其中的结构数据类型的有关的函数,主要如表4.3.1所示。表4.3.1 结构数组的操作函数函数名 功能描述 函数名 功能描述deal 把输入处理成输出 fieldnames 获取结构的字段名getfield 获取结构中指定字段的值 rmfield 删除结构的字段(不是字段内容)setfield 设置结构数组中指定的字段的值 struct 创建结构数组struct2cell 结构数组转化成元胞数组 isfield 判断是否存在该字段isstruct 判断某变量是否是结构类型下面举一些具体的例子说明如果对结构数组加以操作。

8、【例4.3.2-1】 本例目的:一,演示函数fieldnames , getfield , setfield的使用方法;二,让读者感受到结构数组对应用工具包的影响;三,演示struct函数把“对象”转换为结构的应用。本例为获得一个演练的 结构,借助Toolbox control 工具包中的tf函数,先产生一个用传递函数描写的LTI线性时不变2输入2输出系统 。(1)产生2输入2输出系统的传递函数阵“对象”Stf=tf(3,2;4 1,1,1 3 2,1 1 1;1 2 2 1,1 0)Transfer function from input 1 to output.3#1: -s2 + 3 s

9、 + 24 s + 1#2: -s3 + 2 s2 + 2 s + 1Transfer function from input 2 to output.2 -s2 + s + 11 -s(2)为本例演示,把上述的LTI对象Stf转换为结构SSTF=struct(Stf) % 把对象转换成结构,并显示结构的组成SSTF =num: 2x2 cellden:Variable:slti: 1x1 lti(3)获得结构数组SSTF的域名FN=fieldnames(SSTF) % 获得域名元胞数组FNclass(FN) % 检查FN的类别FN =numdenVariablelticell(4)获取SST

10、F.den(2,1)域的内容FC=getfield(SSTF,2,1) % 相当于FC=SSFT.den(2,1)FC1 % 与celldisp(FC)的作用大致相当poly2str(FC1,), % 为了把多项式显示成习惯的形式FC =1x4 double1 2 2 1s3 + 2 s2 + 2 s + 1(5)重新设置SSTF.num(2,1)域的内容SSTF.num2,1 % 显示原始情况SSTF=setfield(SSTF,2,1,1 3 1); % 注意“花括号”的使用 % 显示被重新设置后的情况0 0 4 11 3 1【例4.3.2-2】本例演示结构数组SSTF的扩充和收缩。(本例

11、以例4.3.2-1的运行为基础。)(1)原结构是一个“单结构”size(SSTF)1 1(2)演示结构的扩充SSTF(2,2)=struct(tf(1,1 1) % 把1/(s+1)放在第2行第2列结构中2x2 struct array with fields:numdenVariablelti2 2(3)演示结构数组的收缩:删除结构数组的第1行SSTF(1,= % 收缩成为 的结构S22n=SSTF(1,2).num,S22d=SSTF(1,2).den % 取出第2结构num域和den域的内容printsys(S22n1,S22d1) % 显示成习惯的表达形式S22n =1x2 doubl

12、eS22d =num/den =-s + 1【例4.3.2-3】对结构数组进行域的增添和删减操作。(1)创建结构数组clear,for k=1:10;department(k).number=No.,int2str(k);enddepartmentdepartment =1x10 struct array with fields:number(2)增添域:在数组中任何一个结构上进行的域增添操作,其影响遍及整个结构数组department(1).teacher=40;department(1).student=300;department(1).PC_computer=40;numberteac

13、herstudentPC_computer(3)增添子域的操作只影响被操作的那个具体结构,而不是影响整个结构数组department(2).teacher.male=35;department(2).teacher.female=13;D2T=department(2).teacher % 第2结构teacher域包含两个子域D1T=department(1).teacher % 第1结构teacher域仅是一个数D2T =male: 35female: 13D1T =40(4)删除子域的操作也只影响被操作的那个具体结构department(2).teacher=rmfield(departm

14、ent(2).teacher,male);department(2).teacher 13(5)删除域的操作是对整个结构数组实施的department=rmfield(department,student) % 删除一个域department=rmfield(department,teacherPC_computer)% 删除2个域【例4.3.2-4】数值运算操作和函数在结构域上的作用。n_ex = 5; % 结构数组的长度for k = 1:n_ex, % 创建15结构数组ex(k).f = (k-1)*n_ex + 1:5;end;ex % 显示结构数组的结构ex =1x5 struct

15、array with fields:f%显示结构数组的域中内容disp(blanks(10) 结构域中内容)for k=1:n_ex,disp(ex(k).f),end结构域中内容1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 2021 22 23 24 25class(ex(1).f) % 检查域中内容的类型double% 对各结构域中数值数组相应位置的数据相加求和sum_f=zeros(1,5)n_ex,sum_f=sum_f+ex(k).f;end,sum_fsum_f =55 60 65 70 75% 对结构数组域中各元素分别求平方根disp(

16、blanks(20) ex.f的平方根值n_ex,disp(sqrt(ex(k).f),endex.f的平方根值1.0000 1.4142 1.7321 2.0000 2.23612.4495 2.6458 2.8284 3.0000 3.16233.3166 3.4641 3.6056 3.7417 3.87304.0000 4.1231 4.2426 4.3589 4.47214.5826 4.6904 4.7958 4.8990 5.0000【例4.3.2-5】 指令struct2cell和cell2struct的使用。(1)创建“带2个域的 结构数组”5,ex(k).s= int2st

17、r(k);ex(k).f=(k-1)*5+1:(2)显示结构数组的内容fprintf(%snex.s域的内容 %s,blanks(4)5;%s,ex(k).s blanks(1);,blanks(1),fprintf(ex.f域的内容 disp(ex(k).f); %显示ex.f域内容ex.s域的内容No.1 No.2 No.3 No.4 No.5 ex.f域的内容(3)把ex结构数组转换为元胞数组C_ex=struct2cell(ex); % 带2个域的(15)结构数组转换为(215)元胞数组size(C_ex),C_ex1,1,1,blanks(3) % 显示C_ex第1页第1行第1列内容

18、%5g,C_ex2,1,1) % 显示C_ex第2页第1行第1列内容2 1 5No.1 1 2 3 4 5(4)把元胞数组转换为结构数组之一FS=S_charF_num % 用元胞数组预建域名字符串EX1=cell2struct(C_ex,FS,1) % 元胞数组向结构数组转换EX1 =S_charF_numricEX1(1) % 观察新结构EX1第一结构的情况S_char:No.1F_numric: 1 2 3 4 5(5)把元胞数组转换为结构数组之二EX2=cell2struct(C_ex,xx,2)EX2 =2x5 struct array with fields:xx(6)把元胞数组转

19、换为结构数组之三YY=strvcat(y1y2y3y4y5EX3=cell2struct(C_ex,YY,3)EX3 =y1y2y3y4y5EX3(1) % 观察第一结构情况y1:y2:No.2y3:No.3y4:No.4y5:No.5EX3(2) % 观察第二结构情况 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25【例4.3.2-6】 带子域的结构数组转换为元胞数组。本例中的ex结构数组由例4.2.2-5生成,然后再运行以下程序。ex(1,1).s % 原结构ex(1,1).s中的内容No.1% 增设子域,并把ex结构数组扩充为(35)。ex(1,1).s.sub=SUB 1 % 原ex(1,1).s中的字符串将因本指令而消失ex(3,1).s.sub=SUB 3ex(3,1).s.num=1/3; % 经新赋值后,ex(1,1).s中的内容sub:ex(3,1).s % 经新赋值后,ex(3,1).s中的内容 0.3333C_ex_sub=struct2cell(ex) % 把结构转换为元胞数组C_ex_sub(:,:,1) =1x1 struct 1x1 struct1x5 double ,2) = ,3) =,4) =,

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

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