简体   繁体   English

SISO系统识别

[英]SISO system identification

I have a datasheet (around 100 samples) where for a real SISO system (DC motor), I know the input and output. 我有一个数据表(大约100个样本),对于真正的SISO系统(直流电动机),我知道输入和输出。 With tfest command, I can form first order to nth order transfer function using the same data (loaded with iddata function) for the system. 使用tfest命令,我可以为系统使用相同的数据(已加载iddata函数)形成一阶到n阶传递函数。

But in real life the system can be either 1st order or nth order. 但是在现实生活中,系统可以是1阶或n阶。

Like in MATLAB, using same iddat (contains the sample values), I can generate following transfer functions: 像在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)

Can someone explain the scenario? 有人可以解释情况吗?

Fitting a model to an experimental data requires a minimum amount of knowledge about the underlying physical system. 将模型拟合到实验数据需要有关底层物理系统的最少知识。

Here you have a DC motor which probably does not have any zeros and no DC gain but you are forcing matlab to fit a proper 3rd order transfer function and it is giving you the closest one (not necessarily the correct one). 在这里,您有一台直流电动机,它可能没有零位,也没有直流增益,但是您正在强迫Matlab拟合合适的三阶传递函数,并且它为您提供了最接近的一阶(不一定是正确的一阶)。

Instead remove the half a second delay and let the function find the time constant for you. 而是消除半秒的延迟,然后让函数为您找到时间常数。 So 所以

tfest(iddat,1);

would be sufficient (or try with 3 if you are suspicious about the motor drive). 就足够了(如果对电动机驱动器有怀​​疑,请尝试3)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM