g=100; %统计仿真次数为gN=1024; %输入信号抽样点数k=128; %滤波器阶数pp=zeros(g,N—k); %将每次独立循环的误差结果存于矩阵pp中,以便后面对其平均u=0.00026; %滤波器收敛因子for q=1:g t=1:N; a=1; s=a*sin(0。05*pi*t); %输入单信号s figure(1); subplot(311) plot(s); %信号s时域波形 title(’信号s时域波形’); xlabel('n’); axis([0,N,-a—1,a+1]); xn=awgn(s,5); %加入均值为零的高斯白噪声 %设置初值 y=zeros(1,N); %输出信号y y(1:k)=xn(1:k); %将输入信号xn的前k个值作为输出y的前k个值 w=zeros(1,k); %设置抽头加权初值 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;endpp(q,:)=(e((k+1):N))。^2;endsubplot(312)plot(xn); %信号s时域波形title('信号s加噪声后的时域波形’);subplot(313)plot(y); %信号s时域波形 title('自适应滤波后的输出时域波形’);for b=1:N—k bi(b)=sum(pp(:,b))/g; %求误差统计平均endfigure(2); %算法收敛曲线t=1:N-k;plot(t,bi,’r');title(’收敛曲线’);hold on %将每次循环的图形显示结果保存下来01002003004005006007008009001000-202s信 号 时 域 波 形ns020040060080010001200-505s信 号 加 噪 声 后 的 时 域 波 形020040060080010001200-505自 适 应 滤 波 后 的 输 出 时 域 波 形010020030040050060070080090000.10.20.30.40.50.60.70.80.91算 法 收 敛 曲 线