第三章 字符串、元胞和构架数组.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 字符串、元胞和构架数组

概括介绍fieldnames、getfield和setfield指令的基本使用格式 FN=fieldnames(S_n) %获得构架域名 FC=getfield(S_n,{S_index},f_name,{f_index}) %获得具体构架域中的内容 S_n=setfield(S_n,{S_index},f_name,{f_index},value) %设置具体构架域中的内容 说明: Fieldnames函数输出一维元胞数组FN,它的每个元胞被S_n的每个域名赋值 Getfield函数输出的FC是具体构架域中的内容。 Setfield函数输出的仍是构架数组本身,只是它的某些域被重置了。 S_n 可以是构架数组名,或由编址的元素构架 {S_index} 当S_n为构架数组时,S_index用来指定元素构架的下标。 {S_index} 必须是元胞数组形式 f_name 指定的域名,必须是字符串 {f_index} 用来指定域中数组的下标。 {f_index} 必须是元胞数组形式。 value 是设置值 【例3.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]}) (2)为本例演示,把上述的LTI对象Stf转换为构架 SSTF=struct(Stf) %把对象转换成构架,并显示构架的组成 (3)获得构架数组SSTF的域名 FN=fieldnames(SSTF) %获得域名元胞数组FN class(FN) %检查FN的类别 (4)获取SSTF.den(2,1)域的内容 FC=getfield(SSTF,‘den’,{2,1}) %相当于FC=SSTF.den(2,1) FC{1} %与celldisp(FC)的作用大致相当 poly2str(FC{1},‘s’) %为了把多项式显示成习惯的形式 (5)重新设置SSTF.mum(2,1)域的内容 SSTF.num{2,1} SSTF=setfield(SSTF,num,{2,1},{[1 3 1]}); SSTF.num{2,1} 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)演示构架数组的收缩:删除构架数组的第1行 SSTF(1,:)=[] S22n=SSTF(1,2).num, S22d=SSTF(1,2).den printsys(S22n{1},S22d{1}) 2 增添域和删除域 【例3.3.3.2-1】对构架数组green_house进行域的增添和删减操作。 (1)创建构架数组 clear, for k=1:10; department(k).number=[No.,int2str(k)] end (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=department(2).teacher %第2构架teacher域包含两个子域 D1T=department(1).teacher %第1构架teacher域仅是一个数 (4)删除子域的操作只影响被操作的那个具体构架,而不影响整个构架数组 department(2).teacher=rmfield(department(2).teacher,male); department(2).teacher

文档评论(0)

6358999 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档