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

📄 lms_matlab.m

📁 是一个描述自适应滤波器的算法
💻 M
字号:
%用matlab 实现LMS算法,将输入和输出信号进行对比,
%并给出均方误差曲线,假设抽头个数为k,数据长度为N
g=20;%统计仿真次数为g
N=2048;%输入信号抽样点数
k=64;%时域抽头LMS算法滤波器阶数
pp=zeros(g,N-k);%将每次独立循环的误差结果存于矩阵pp中,以便后面对其平均
u=0.0002;     %步长值
%开始仿真
for q=1:g   
    t=1:N;  %样本点系数
    a=1;
    s=a*sin(0.05*pi*t); %输入单频信号 s 
    figure(1);
    subplot(3,1,1)
    plot(t,real(s));%信号s的时域波形
    title('信号s时域波形');
    xlabel('n');
    ylabel('s');
    axis([0,N,-a-1,a+1]);
    xn=awgn(s,3);%加入均值为零的高斯白噪声,信噪比为3db
    %设置初值
    y=zeros(1,N); %输出信号y
    y(1:k)=xn(1:k); %将输入信号xn的前k个值作为输出y的前k个值
    w=zeros(1,k); %设置抽头加权初值xn
    e=zeros(1,N); %误差信号
    %用LMS算法迭代滤波
    for i=(k+1):N
        XN=xn((i-k+1):(i));
        y(i)=w*XN';
        e(i)=s(i)-y(i);
        w=w+u*e(i)*XN;
    end
    pp(q,:)=(e(k+1:N)).^2;    %计算该第q次LMS的均方误差
end
subplot(3,1,2)
plot(t,real(xn));  %信号s加噪声后时域波形
title('信号s加噪声后是的时域波形');
subplot(3,1,3)
plot(t,real(y)); 
title('自适应滤波后的时域波形');
axis([0,N,-a-1,a+1]);
for b=1:N-k
    bi(b)=sum(pp(:,b))/g;    %求误差的统计平均
end
figure(2);  %算法收敛曲线
t=1:N-k;
semilogy(t,bi,'r');
title('取平均后的均方误差');
hold on %将每次循环的图形现实结果保存下来 

⌨️ 快捷键说明

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