SISO系统识别

时间:2017-03-21 00:25:14

标签: matlab controls system-identification

我有一个数据表(大约100个样本),对于真正的SISO系统(直流电机),我知道输入和输出。使用tfest命令,我可以使用系统的相同数据(加载iddata函数)形成第一阶到第n阶传递函数。

但在现实生活中,系统可以是一阶或第n阶。

与在MATLAB中一样,使用相同的iddat(包含样本值),我可以生成以下传递函数:

sys1 = tfest(iddat, 1, 1, 0.5); %number of zero=1, pole=1, 1st order system

sys1 =

  From input "u1" to output "y1":
       exp(-0.5*s) * (2.932 s - 0.1862) / (s + 1.082)
sys = tfest(iddat, 3, 2, 0.5);%number of zero=3, pole=2, 2nd order system 

sys =

  From input "u1" to output "y1":
       exp(-0.5*s) * (0.1936 s^2 - 0.02193 s + 0.0006905) / ( s^3 + 0.07175 s^2 + 0.05526 s + 1.772e-13)

有人可以解释一下情景吗?

1 个答案:

答案 0 :(得分:0)

将模型拟合到实验数据需要有关底层物理系统的最少知识。

在这里你有一个直流电机,可能没有任何零和没有直流增益,但你强迫matlab适合正确的三阶传递函数,它给你最近的一个(不一定是正确的)。

取而代之的是移除半秒延迟,让函数为您找到时间常数。所以

tfest(iddat,1);

就足够了(如果您对电机驱动有疑问,可以试试3)。