首页 > 解决方案 > 从输入和输出数据估计传递函数系数

问题描述

输入和输出数据

我想确定 TF 的系数。我有输入和输出响应。我可以构建一个 tf 并验证结果,但我正在考虑一种更好的方法来使用 MATLAB 识别系统。我的方法如下:

Ts=0.1; 
input=[0 1 1 1 1 1 1]';
output=[0 1.5 1.45 1.4050 1.3645 1.3281 1.2952]';
% data=iddata(y, u, Ts)
% sys=tfest(data,2,1);

% create iddata object by specifying output signal, input signal, and sampling time
data=iddata(output,input,0.1);
% estimate a transfer function with 2 poles and 1 zero
sys=tfest(data,2,1);

But I don't manage to get the correct coefficients. Any suggestions? 

标签: matlabcontrols

解决方案


我看不出有什么理由使用笔和纸以外的任何东西来完成这项任务。

您可以解析 TF D(z) = Y(z)/U(z),它(用 表示时间样本k)在离散时间域中给出:

y(k) = -a1 * y(k-1) + b0 * u(k) + b1 * u(k-1)

您有三个未知数 -a1和- 通过填写七个给定 IO 对中的三个并求解三个方程的结果集,您可以轻松找到它们b0b1

显然,您可以将其表述为一个线性系统Ax = b,并相应x = [a1, b0, b1]地填充 和 的行。然后你可以利用 Matlab 的伪逆来找到系数,以防必须通过最小二乘拟合找到系数。Abx = A\b


推荐阅读