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

📄 iir.m

📁 matlab,自适应滤波算法
💻 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 + -