📄 example10_1.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 + -