fs=8000; %采样频率
x1=audiorecorder(fs,16,1);
recordblocking(x1,10);%10秒
y1 = getaudiodata(x1);
figure(1);
subplot(1,2,1);
plot(y1);
title('样本1');
xlabel('样本数');
ylabel('幅值');
Y1=fft(y1);
subplot(1,2,2);
plot(abs(Y1));
title('男声录入频谱图');
xlabel('Freq/HZ');
ylabel('幅值');
filename= 'yuan1.wav'
audiowrite(filename,y1,fs);
g=100; %统计仿真次数为g
N=8000; %输入信号抽样点数
k=128; %时域抽头LMS算法滤波器阶数
pp=zeros(g,N-k); %将每次独立循环的误差结果存于矩阵pp中,以便后面对其平均
u=0.00026; %滤波器收敛因子
for q=1:g
t=1:N;
a=1;
s=getaudiodata(x1); %输入单信号s
figure(2);
subplot(311)
plot(t,real(s)); %信号s时域波形
title('信号s时域波形');
xlabel('n');
ylabel('s');
axis([0,N,-a-1,a+1]);
xn=awgn(s,5); %加入均值为零的高斯白噪声,信噪比为3dB
%设置初值
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;
end
pp(q,:)=(e((k+1):N)).^2;
end
subplot(312)
plot(t,real(xn)); %信号s时域波形
title('信号s加噪声后的时域波形');
subplot(313)
plot(t,real(y)); %信号s时域波形
title('自适应滤波后的输出时域波形');
for b=1:N-k
bi(b)=sum(pp(:,b))/g; %求误差统计平均
end
原来的
g=100; %统计仿真次数为g
N=1024; %输入信号抽样点数
k=128; %时域抽头LMS算法滤波器阶数
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(t,real(s)); %信号s时域波形
title('信号s时域波形');
xlabel('n');
ylabel('s');
axis([0,N,-a-1,a+1]);
xn=awgn(s,5); %加入均值为零的高斯白噪声,信噪比为3dB
%设置初值
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;
end
pp(q,:)=(e((k+1):N)).^2;
end
subplot(312)
plot(t,real(xn)); %信号s时域波形
title('信号s加噪声后的时域波形');
subplot(313)
plot(t,real(y)); %信号s时域波形
title('自适应滤波后的输出时域波形');
for b=1:N-k
bi(b)=sum(pp(:,b))/g; %求误差统计平均
end
figure(2); %算法收敛曲线
t=1:N-k;
plot(t,bi,'r');
hold on %将每次循环的图形显示结果保存下来
LMS.zip_LMS 信号_LMS正弦_lms_自适应LMS算法_自适应滤波
版权申诉
5星 · 超过95%的资源 170 浏览量
2022-09-24
21:24:57
上传
评论
收藏 1KB ZIP 举报
邓凌佳
- 粉丝: 65
- 资源: 1万+