close all;
clear all;
clc;
M=11;%抽头个数
m=200;%重复实验次数
w0=zeros(M,1);%抽头加权向量初值
notes1={'\leftarrow W=3.5';'\leftarrow W=3.3';'\leftarrow W=3.1';'\leftarrow W=2.9'};%实验1学习曲线图的标注信息
notes2={'\leftarrow \mu=0.075';'\leftarrow \mu=0.025';'\leftarrow \mu=0.0075'};%实验2学习曲线图的标注信息
a=input('请选择实验:\n1.特征值扩散度的影响\n2.步长参数的影响\n ');%选择实验
if a==1%实验1
n=1000; %迭代次数
W=[3.5,3.3,3.1,2.9];%参数W的取值
miu=0.075;%步长参数
for i=1:length(W)
e_sum=zeros(n,1);
w_sum=zeros(M,1);
for j=1:m
x=signal(n+M-1);%产生随机序列x
u=channel(x,W(1,i));%通过信道并加上噪声,获得抽头输入u
[e,w]=LMSFilter(x,u,w0,miu,n);%进行LMS滤波,获得滤波误差和抽头加权向量的估计值
e_sum=e_sum+e.^2;%计算200次重复实验滤波误差的和
w_sum=w_sum+w;%计算200次重复实验抽头加权向量的和
end
e_ave=sqrt(e_sum/m);%计算均方误差
w_ave=w_sum/m;%计算平均抽头加权向量
figure(1);
semilogy((1:n),e_ave);%绘制学习曲线
text(n,(e_ave(n,1)),notes1(i));%标注信息
hold on;
xlabel('迭代次数');
ylabel('平均平方误差');
figure(2);
subplot(4,1,i);
stem(w_ave);%绘制滤波器的平均响应图
title(['W=' num2str(W(1,i))]);
ylabel('w_k');
end
elseif a==2%实验2
n=3500; %迭代次数
W=3.1;%参数W
miu=[0.075,0.025,0.0075];%补偿参数的取值
for i=1:length(miu)
e_sum=zeros(n,1);
for j=1:m
x=signal(n+M-1);%产生随机序列x
u=channel(x,W);%通过信道并加上噪声,获得抽头输入u
[e,w]=LMSFilter(x,u,w0,miu(1,i),n);%进行LMS滤波,获得滤波误差和抽头加权向量的估计值
e_sum=e_sum+e.^2;%计算200次重复实验滤波误差的和
end
e_ave=sqrt(e_sum/m);%计算均方误差
semilogy((1:n),e_ave);%绘制学习曲线
text(n/20*i,(e_ave(n/20*i,1)),notes2(i));%标注信息
hold on;
xlabel('迭代次数');
ylabel('平均平方误差');
end
end
评论0