显然是有区别的呀!
我把我的资料发给你吧,你好好看看,如过不懂的话,在问我呀
QQ:250750068
clear;clc;
%采样点数
N=25000;
%系统采样频率fs=8kHz
Ts=125e-6;
%以下为网络响应h(n)
n=10;hn=2:n;hn=1./hn;
A=1;
Choice=menu('请选择信号形式',' 1KHz正弦信号 ',' [0,1]均匀分布信号 ',' EXIT ');
if Choice==1;
%输入为正弦信号u(n)
f=1000;
t=1:N;
v=A*sin(2*pi*f*t*Ts);
elseif Choice==2;
%输入为随机信号
v=rand(1,N);
else
return;
end;
%滤波器参数初始化
M=9;%滤波器阶数
step=0.09;%步长
SNR=0:5:20;
MSE=zeros(length(SNR),N-M+1);
dn_cap=zeros(length(SNR),N-M+1);
ERLE=zeros(length(SNR),N-M+1);
for i=1:length(SNR);
%加入噪声
E=1/2*A^2;
snr=10.^(SNR(i)/10);
sigma=sqrt(E/snr);
randn('state',10);
Noise=sigma*randn(size(v));
u=v+Noise;
%网络输出d(n)
dn=conv(u,hn);
%系数初始值
w=zeros(M,1);
s2=0;e2=0;
%LMS算法
for num=M:N;
un=u(num:-1:num-M+1);
un=un.';
dn_cap(i,num)=w'*un;
en=dn(num)-dn_cap(i,num);
MSE(i,num-M+1)=en.^2;
%迭代
w=w+step.*un.*en;
%求ERLE
s2=s2+dn(num).^2;
e2=e2+en.^2;
ERLE(i,num-M+1)=10*log10(s2/e2);
end;
end;
figure
semilogy(1:20000,abs(MSE(:,1:20000)))
axis([0 20000 10^(-40) 1])
xlabel('n')
ylabel('MSE')
if Choice==1;
title('输入为f=1000Hz正弦信号时的LMS回波抵消器性能');
else
title('输入为[0,1]均匀分布信号时的LMS回波抵消器性能');
end;
legend('SNR=0dB','SNR=5dB','SNR=10dB','SNR=15dB','SNR=20dB')
grid on
figure
plot(1:20000,ERLE(:,1:20000))
xlabel('n')
ylabel('ERLE(dB)')
axis([0 20000 10 40])
legend('SNR=0dB','SNR=5dB','SNR=10dB','SNR=15dB','SNR=20dB',4)
grid on
% figure
% plot(u);
% axis([0 500 -1.5 1.5])
%
% figure
% subplot(2,1,1)
% plot(dn)
% axis([0 500 -1.5 1.5])
%
% subplot(2,1,2)
% plot(dn_cap)
% axis([0 500 -1.5 1.5])
% figure
% axis([M 500 10^(-3) 1]);