阶跃响应曲线法辨识二阶系统matlab代码
时间: 2023-11-25 21:13:15 浏览: 355
以下是基于MATLAB的阶跃响应曲线法辨识二阶系统的代码:
```matlab
% 定义二阶系统的参数
K = 2;
T1 = 1.5;
xi = 0.4;
omega_d = sqrt(1 - xi^2) / T1;
% 产生单位阶跃信号并模拟系统输出
t = 0:0.01:10;
u = ones(size(t));
y = K * (1 - exp(-t/T1) .* (cos(omega_d*t) + xi/sqrt(1-xi^2)*sin(omega_d*t)));
% 计算阶跃响应曲线并绘制
step_resp = diff(y) ./ diff(u);
plot(step_resp);
% 根据阶跃响应曲线计算二阶系统参数
[peak_val, peak_idx] = max(step_resp);
T2 = t(peak_idx);
omega_n = pi / T2 / sqrt(1 - xi^2);
K_calc = peak_val;
xi_calc = xi;
T1_calc = sqrt(1 + 2*xi_calc*omega_n*T2 + omega_n^2*T2^2) / omega_n;
% 打印二阶系统参数
fprintf('K: %f\n', K_calc);
fprintf('T1: %f\n', T1_calc);
fprintf('xi: %f\n', xi_calc);
```
该代码首先定义了一个二阶系统的参数,然后产生了一个单位阶跃信号并模拟了系统输出的响应曲线。接着,使用差分计算出了阶跃响应曲线,并根据阶跃响应曲线计算出了二阶系统的参数。最后,打印出了计算出的二阶系统的参数。
阅读全文