matlab 参数辨识,Matlab系统辨识尝试之详细过程1

  • Post author:
  • Post category:其他


前面介绍了Matlab系统辨识工具箱的一些用法,这里拿一个直观的例子来尝试工具箱的具体用法。比较长,给个简单目录吧:

1. 辨识的准备

2. 辨识数据结构的构造

3. GUI辨识

4. 辨识效果

5. 对固有频率的辨识

6. 结构化辨识

7. 灰箱辨识

8. 加入kalman滤波的灰箱辨识

1.辨识的准备

在辨识前,首先要根据自己辨识的情况,确定要辨识的状态空间模型的一些特点,如连续还是离散的;有无直通分量(即从输入直通到输出的分量);输入延迟;初始状态等。了解了这些情况就可以更快速的配置辨识时的一些设置选项。

2.辨识数据结构的构造

使用原始数据构造iddata结构:

data = iddata(y, u, Ts);

这里以一个弹簧质量系统的仿真为例

35329243_1.png

代码如下,其中用到了函数MDOFSolve,这在之前的博文介绍过(http://chunqiu.blog.ustc.edu.cn/?p=183),拿来用即可。如果发现运行有错误,可以将MDOFSolve函数开头的一句

omega2 = real(eval(omega2));

注释掉。

% 弹簧质量系统建模

clc

clear

close all

m = 200;

k = 980*1000;

c = 1.5*1000;

m1 = 1*m;

m2 = 1.5*m;

k1 = 1*k;

k2 = 2*k;

k3 = k1;

%% 由振动力学知识求固有频率

M = [m1 0; 0 m2];

K = [k1+k2 -k2; -k2 k3+k2];

[omega, phi, phin] = MDOFSolve(M, K);

fprintf(‘固有频率:%fHz\n’, subs(omega/2/pi));

%% 转化到状态空间

innum = 2;

outnum = 2;

statenum =