【例1-2】本例演示结构数组SSTF的扩充和收缩。(本例以例1-1的运行为基础。) (1)原结构是一个“单结构” size(SSTF) ans = 1 1 (2)演示结构的扩充 SSTF(2,2)=struct( tf(1,[1 1]) ) % 把1/(s+1)放在第2行第2列结构中 size(SSTF) SSTF = 2x2 struct array with fields: num den Variable lti ans = 2 2 (3)演示结构数组的收缩:删除结构数组的第1行 SSTF( 1,Smile=[] % 收缩成为 的结构 S22n=SSTF(1,2).num,S22d=SSTF(1,2).den % 取出第2结构num域和den域的内容 printsys(S22n{1}, S22d{1} ) % 显示成习惯的表达形式 SSTF = 1x2 struct array with fields: num den Variable lti S22n = [1x2 double] S22d = [1x2 double] num/den = 1 ----- s + 1 【例1-3】对结构数组进行域的增添和删减操作。 (1)创建结构数组 clear,fork=1:10;department(k).number=['No.',int2str(k)];end department department = 1x10 struct array with fields: number (2)增添域:在数组中任何一个结构上进行的域增添操作,其影响遍及整个结构数组 department(1).teacher=40;department(1).student=300; department(1).PC_computer=40; department department = 1x10 struct array with fields: number teacher student PC_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: 35 female: 13 D1T = 40 (4)删除子域的操作也只影响被操作的那个具体结构 department(2).teacher=rmfield(department(2).teacher,'male'); department(2).teacher ans = female: 13 (5)删除域的操作是对整个结构数组实施的 department=rmfield(department,'student') % 删除一个域 department = 1x10 struct array with fields: number teacher PC_computer department=rmfield(department,{'teacher';'PC_computer'})%删除2个域 department = 1x10 struct array with fields: number
|