结构数组的操作函数 2——例题(一)
下面举一些具体的例子说明如果对结构数组加以操作。
【例1-1】本例目的:一,演示函数fieldnames , getfield , setfield的使用方法;
二,让读者感受到结构数组对应用工具包的影响;
三,演示struct函数把“对象”转换为结构的应用。
本例为获得一个演练的结构,借助Toolbox control 工具包中的tf函数,先产生一个用传递函数描写的LTI线性时不变2输入2输出系统。
(1)产生2输入2输出系统的传递函数阵“对象”
Stf=tf( {3,2;,1}, { ,;, } )
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:
(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 =
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},{});% 注意“花括号”的使用
SSTF.num{2,1} % 显示被重新设置后的情况
ans =
0 0 4 1
ans =
1 3 1
页:
[1]