📄 iir.m
字号:
%%%%%%%%%%%%%%%%%%%% 绘制基于LMS算法IIR递归结构自适应滤波器权系数的过度图
%%%%%%%%%%%%%%%%%%%% 序列由零均值、单位方差的白噪声通过一个ARMA(2,2)模型产生
%%%%%%%%%%%%%%%%%%%% 参数输入 %%%%%%%%%%%%%%%%%%%%
clc;
clear all;
m = 500; % 迭代次数
M = diag([0.001 0.001 0.001 0.0015 0.005]); % 迭代矩阵
a0 = 1; % 模型参数
a1 = -1.2;
a2 = 0.4;
b1 = 1;
b2 = -0.3;
%=================================================
%%%%%%%%%%%%%%%%%%%% 产生序列 %%%%%%%%%%%%%%%%%%%%
en = randn(1,m);
en1 = randn(1,m);
x(1) = en(1); % 赋初值
x(2) = en(2);
for i = 3 : m
x(i) = a0*en(i)+a1*en(i-1)+a2*en(i-2)+b1*x(i-1)+b2*x(i-2);
end
d(1) = en1(1);
d(2) = en1(2);
for i = 3 : m
% d(i) = x(i);
d(i) = a0*x(i)+a1*x(i-1)+a2*x(i-2)+b1*d(i-1)+b2*d(i-2);
end
%=================================================
%%%%%%%%%%%%%%%%%%%% 赋初始值 %%%%%%%%%%%%%%%%%%%%
w = [0.5 -0.5 1 0 -1]'; % 复合权矢量初始值
y(1) = en(1); % 初始值
y(2) = en(2);
ab(:,1) = [0 0 0 0 0];
ab(:,2) = [0 0 0 0 0];
%=================================================
%%%%%%%%%%%%%%%%%%%% 估计权系数 %%%%%%%%%%%%%%%%%%%%
for n = 3 : m
u = [x(n) x(n-1) x(n-2) y(n-1) y(n-2)]'; % 复合数据矢量初始值
y(n) = w'*u; % 输出
ab(:,n) = u+w(4)*ab(:,n-1)+w(5)*ab(:,n-2);
e = d(n)-y(n); % 产生误差信号
delta = -2*e*ab(:,n); % 梯度
w = w-M*delta;
aa0(n) = w(1);
aa1(n) = w(2);
aa2(n) = w(3);
bb1(n) = w(4);
bb2(n) = w(5);
n(n) = n;
end
%=================================================
%%%%%%%%%%%%%%%%%%%% 绘制图形 %%%%%%%%%%%%%%%%%%%%
plot(aa0,'b');hold on;
plot(aa1,'k');hold on;
plot(aa2,'c');hold on;
plot(bb1,'g');hold on;
plot(bb2,'m');hold on;
legend('a0=1','a1=-1.2','a2=0.4','b1=1','b2=-0.3');
grid on;
%=================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -