【问题标题】:SISO system identificationSISO系统识别
【发布时间】:2017-03-21 00:25:14
【问题描述】:

我有一个数据表(大约 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 controls system-identification


    【解决方案1】:

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

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

    改为去掉半秒的延迟,让函数为你找到时间常数。所以

    tfest(iddat,1);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 2013-11-11
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多