4. 3.2 结构数组的操作
MATLAB中专门用于对结构数组的操作的函数并不多,通过 help datatypes获取数据类型列表,可以看到其中的结构数据类型的有关的函数,主要如表4.3.1所示。
表4.3.1 结构数组的操作函数
函数名 功能描述 函数名 功能描述
deal 把输入处理成输出 fieldnames 获取结构的字段名
getfield 获取结构中指定字段的值 rmfield 删除结构的字段(不是字段内容)
setfield 设置结构数组中指定的字段的值 struct 创建结构数组
struct2cell 结构数组转化成元胞数组 isfield 判断是否存在该字段
isstruct 判断某变量是否是结构类型
下面举一些具体的例子说明如果对结构数组加以操作。
【例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: -------------
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'), % 为了把多项式显示成习惯