matlab 自适应噪声,求助:自适应噪声对消在MATLAB中的实现

显然是有区别的呀!

我把我的资料发给你吧,你好好看看,如过不懂的话,在问我呀

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]);

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值