数学建模社区-数学中国

标题: 结构数组的操作函数 2——例题(一) [打印本页]

作者: 森之张卫东    时间: 2015-8-10 20:54
标题: 结构数组的操作函数 2——例题(一)

下面举一些具体的例子说明如果对结构数组加以操作。


【例1-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 22 1],[1 0] }  )


Transfer function from input 1 to output...

3

#1: -------------

s^2 + 3 s + 2


4 s + 1

#2: ---------------------

s^3 + 2 s^2 + 2 s + 1

Transfer function from input 2 to output...

2

#1: -----------

s^2 + s + 1

1

#2: -

s

2)为本例演示,把上述的LTI对象Stf转换为结构

SSTF=struct(Stf)       % 把对象转换成结构,并显示结构的组成

SSTF =

num: {2x2 cell}

den: {2x2 cell}

Variable: 's'

lti: [1x1 lti]

3)获得结构数组SSTF的域名

FN=fieldnames(SSTF) % 获得域名元胞数组FN

class(FN)     % 检查FN的类别

FN =

'num'

'den'

'Variable'

'lti'

ans =

cell

4)获取SSTF.den(2,1)域的内容

FC=getfield(SSTF,'den',{2,1})     % 相当于FC=SSFT.den(2,1)

FC{1}                                              % celldisp(FC)的作用大致相当

poly2str(FC{1},'s'),                       % 为了把多项式显示成习惯的形式

FC =

[1x4 double]

ans =

1 2 2 1

ans =

s^3 + 2 s^2 + 2 s + 1

5)重新设置SSTF.num(2,1)域的内容

SSTF.num{2,1}                 % 显示原始情况

SSTF=setfield(SSTF,'num',{2,1},{[1 3 1]});%   注意“花括号”的使用

SSTF.num{2,1}                     % 显示被重新设置后的情况

ans =

0 0 4 1

ans =

1 3 1







欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5