⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example10_1.m

📁 系统辨识的M文件
💻 M
字号:

clear all; 
N=1000;                                                         % 设置试验数据长度 
A=[ 1  -1.5  0.7 ];    B=[0 1 0.5];   C=[1  0.5];  D=[1  0.5];  % 模型参数  
Model=idpoly(A, B);                                             % 理想系统模型    
Step(Model,  [0 100]);    Grid;                                 % 绘制阶跃响应曲线  

% 产生输入输出数据     
Model_Wnoise = idpoly(A,B, 1);                               % 模型中加入白噪声   
U=iddata([  ],idinput(N,  'prbs'));                          % 伪随机序列   
E=iddata([  ],idinput(N,  'rgs'));                           % 白噪声序列   
Y=sim(Model_Wnoise, [U, E]);                                 % 产生输出数据  
Model_Noise1 = idpoly(A, B, C);                              % 有色噪声模型1  
Y1=sim(Model_Noise1, [U, E]);      
Model_Noise2 = idpoly(A, B, 1, D);                           % 有色噪声模型2   
Y2=sim(Model_Noise2, [U, E]);    

% 检验非参数模型 
Z=[Y, U];         
Z=detrend(Z);                                                % 滤波处理  
[Impulse_Res, r, c1 ] = cra(Z, 100, 0, 1);                   % 相关分析法  
plot(Impulse_Res(2:50));                                     % 绘制脉冲响应曲线   
Grid on;  
hold on;      
impulse(Model_Wnoise, 'r', 50);                              % 理想的脉冲响应  
hold off;      

% 阶次的估计        
data=iddata(Y, U);                                           % 输入输出数据组  
NN=struc(1:3,1:3,1:3);                                       % 阶次的选择范围 
 Loss_Fun=arxstruc(data, data, NN);                          % 损失函数   
 order=selstruc(Loss_Fun,'aic');                             % 辨识系统的阶次  
 
% 模型的检验  
Model_Para = arx(data, order);                               % 参数估计  
present(Model_Para);                                         % 显示模型   
compare(data,Model_Para);                                    % 预测与实际输出比较  
resid(Model_Para,data);                                      % 模型预测误差 
  
[Para1, Para2]  = rarx(data, order, 'ff', 0.98);    % 递推参数估计  
count=length(Para1);                                % 递推次数  
A=[1, Para1(count, 1), Para1(count, 2)];            % 参数向量  
B=[0, Para1(count, 3), Para1(count, 4)];            % 参数向量   
Model_Para=poly2th(A, B);                           % 建立线性模型 
 
%有色噪声模型1   
data=iddata(Y1, U);                                % 输入输出数据组   
NN=struc(1:2,1:2,1:2);                             % 阶次范围  
Loss_Fun=arxstruc(data, data, NN);                 % 损失函数 
order=selstruc(Loss_Fun, 'aic');                   % 辨识系统的阶次  
order=[order(1), order(2), 1, order(3)];           % 选择模型结构 
Model_Noise1 = armax(data, order);                 % ARMAX模型   

% 有色噪声模型2   
data=iddata(Y2, U);                                % 输入输出数据组  
NN=struc(1:2,1:2,1:2);                             % 阶次范围  
Loss_Fun=arxstruc(data, data, NN);                 % 损失函数 
order=selstruc(Loss_Fun, 'aic');                   % 辨识系统的阶次  
order=[order(1), order(2), 0, 1, 0, order(3)];     % 选择模型结构 
Model_Noise2 = pem(data, order);                   % 通用线性模型  
 
% 其它模型及辨识算法   
NN=[2 1 2 2 1];   
Model=BJ(data, NN);                                % Box--Jenkins模型   
NN=[2 2 1 ];  
Model=oe(data, NN);                                % 输出误差模型   
NN=[2 2 1 ];    
Model=roe(data, NN, 'ff', 0.98);                   % 递推算法  
NN=[2 1 1 1 1 1];    
Model=pem(data, NN);                               % 通用线性模型   
NN=[2 1 1 1 1 1];    
Model=rpem(data, NN, 'ff', 0.98);                  % 递推算法 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -