本文介绍了如何利用MATLAB辨识状态空间方程中的未知参数。
假设我们的被控系统的表达如下:
我们想要通过实验数据辨识出参数K1和K2,方法如下:
第一步,采集实验数据。
需要的数据包括系统一段时间内的系统输出Y(ts),以及控制量U(ts),这些数据应该是以某个固定的采样频率进行采集得到的。另外,最好是要采集系统的初始状态(虽然这个初始状态也是可以辨识的,但能采集到尽量就采集到)。
第二步,运用MATLAB进行辨识
代码如下,重要的步骤都体现在注释中了:
clc;
clear all;
close all;
format long
%% 读取数据,这一部分大家按照自己的应用来更改
data = xlsread('nopec-static-4.xlsx');
t = data(:,1) - data(1,1);
x1 = data(:,2)/360*2*pi - 0.1;
x2 = data(:,3)/16.4/57.3;
x = [x1,x2];
u1 = zeros(size(x1));
u2 = zeros(size(x2));
u = [u1, u2];
%% 搭建状态空间模型