SISO系统识别

SISO 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)

谁能解释一下这个场景?

将模型拟合到实验数据需要对底层物理系统有最基本的了解。

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

取而代之的是去掉半秒的延迟,让函数为你找到时间常数。所以

tfest(iddat,1);

就足够了(如果您怀疑电机驱动器,请尝试使用 3)。