我有一个数据表(大约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)
有人可以解释一下情景吗?
答案 0 :(得分:0)
将模型拟合到实验数据需要有关底层物理系统的最少知识。
在这里你有一个直流电机,可能没有任何零和没有直流增益,但你强迫matlab适合正确的三阶传递函数,它给你最近的一个(不一定是正确的)。
取而代之的是移除半秒延迟,让函数为您找到时间常数。所以
tfest(iddat,1);
就足够了(如果您对电机驱动有疑问,可以试试3)。