自适应噪声抵消LMS算法Matlab仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

自适应噪声抵消LMS 算法Matlab 仿真

传统的宽带信号中抑制正弦干扰的方法是采用陷波器(notch filter),为此我们需要精确知道干扰正弦的频率.然而当干扰正弦频率是缓慢变化时,且选频率特性要求十分尖锐时,则最好采用自适应噪声抵消的方法.下图是用一个二阶FIR 的LMS 自适应滤波器消除正弦干扰的一个方案。

1) 借助MATLAB 画出误差性能曲面和误差性能曲面的等值曲线; 2) 写出最陡下降法, LMS 算法的计算公式(δ=0.4);

3) 用MATLAB 产生方差为0.05,均值为0白噪音S(n),并画出其中一次实现的波形据2)中的公式,并利用3)中产生的S(n),在1)中的误差性能曲面的等值曲n 的值曲线上叠加画出LMS 法时100情况确定,一般选取足够大以使算法达到基)

(n y 宽带信号+正弦干扰

0()()()

y n S n N n =+图;

4) 根线上叠加画出采用最陡下降法, LMS 法时H(n)的在叠代过程中的轨迹曲线。

5)用MATLAB 计算并画出LMS 法时 随时间变化曲线(对 应S(n)的某一次的一次实现)和e(n)波形;某一次实现的结果并不能从统计的角度反映实验的结果的正确性,为得到具有统计特性的实验结果,可用足够多次的实验结果的平均值作为实验的结果。用MATLAB 计算并画出LMS 法时J(n)的100次实验结果的平均值随时间n 的变化曲线。 6)用MATLAB 计算并在1)中的误差性能曲面的等次实验中的H(n)的平均值的轨迹曲线;

(在实验中n=1,,…..N,N 的取值根据实验本收敛)

01(),(0)0.05

2()sin(

16102()sin()

16ss S n r N n n N n n πππ

==+是均匀分布的白噪音不相关

和)(),()(10n N n N n S

)

(n x x 1()()

)

(n e n N n =

1、用Matlab画误差性能曲面和误差性能曲面的等值曲线的程序如下:

[h0,h1] = meshgrid(-2:0.1:4 , -4:0.1:2);

J=

0.55+h0.*h0+h1.*h1+2*cos(pi/8)*h1.*h0-sqrt(2)*h0*cos(pi/10)-sqrt(2)*h1*cos(9*pi/4

0);

echo on;

v=0:0.1:2;

%axis([-4 4 -4 4 0 100]);

figure(1);

%误差曲面

surf(h0,h1,J);

xlabel('h0');

ylabel('h1');

title('误差性能曲面');

figure(2);

contour(h0,h1,J,v); %等值曲线

xlabel('h0');

ylabel('h1');

title('误差性能曲面等值曲线');

运行结果如下图示:

2、①最陡下降法计算公式:

(n 21

)()1(H G V n H n δ−=+ 其中δ取0.4,H(0)=[3 -4],

T ⎟⎠⎞⎜⎝⎛+=

⎟⎠⎞⎜⎝⎛

−⎥⎦⎤⎢⎣⎡⎟⎠⎞⎜⎝⎛+==⎟

⎞⎜⎝⎛−⎟⎠⎞⎜⎝⎛=⎥⎦⎤⎢⎣⎡−⎥⎦⎤

⎢⎣⎡⎥⎦⎤⎢⎣⎡=−=∑∑==1016k 2cos 2116)(2sin 210162sin 2161)(r 16k

2cos 16)(2sin 2162sin 2161)(r )1()0(2)()()0()1()1()0(22)(2)(V 15015010G ππππππππi yx i xx yx yx xx xx xx xx yx

xx k i i k k i i k r r n h n h r r r r r n H R n 而

⎢⎣⎡−−=⎥⎦

⎢⎣⎡−⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=5320.37362.2)0(5377.06725.02)()(19239.09239.012)(10G G V n h n h n V

②LMS 算法计算公式:

,...

2,1,0),1()1()()1()

1()()1()1(e =+++=++−+=+n n X n e n H n H n X n H n y n T δ

其中δ取0.4。

3、 用MATLAB 产生方差为0.05,均值为0白噪音s(n) 程序如下: n=1:1024;

s(n)=sqrt(0.05)*randn(1,length(n)); plot(s);

axis([0 1024 -1 1]); title('白噪声s(n)');

其一次实现图形如下:

4、 最陡下降法和LMS 算法程序: clear all;

N=1000;%信号点数 k=2;%滤波器阶数

q=0.4;%步长

s=sqrt(0.05)*randn(1,N);%原始信号

n=1:N;

y=s(n)+sin(2*pi*n/16+pi/10);%叠加噪声后的期望输出信号

x=sqrt(2)*sin(2*pi*n/16);%相关噪声输入

figure(1);

subplot(3,1,1);

plot(n,s);

title('原始宽带信号S(n)');

subplot(3,1,2);

plot(n,y);

title('叠加噪声后输出信号y(n)');

subplot(3,1,3);

plot(n,x);

title('相关噪声输入信号x(n)');

%设置初值并进行两种算法的迭代

hn=zeros(2,N);%存放最陡下降法下H(n)迭代数据

hn(:,1)=[3 -4]';

vg=[-2.7362 -3.5320]';

Rxx=[[1 0.9239]',[0.9239 1]'];

Ryx=[0.6725 0.5377]';

echo off;

for i=1:N-1%最陡下降法,第n=i-1次迭代

vg=2*Rxx*hn(:,i)-2*Ryx;

hn(:,i+1)=hn(:,i)-1/2*q*vg;

end;

hm=zeros(2,N);%存放LMS算法下H(n)迭代数据

h=[3 -4]';

hm(:,1)=h;

for i=2:N

%XN=x(i+1:i)';

u=x(i:-1:i-1);

en=y(i)-u*h;

h=h+q*en*u';

hm(:,i)=h;

end;

%绘制图像

[h0,h1] = meshgrid(-2:.1:4 , -4:.1:2);

J = 0.55+h0.*h0+h1.*h1+2*cos(pi/8)*h1.*h0-sqrt(2)*h0*cos(pi/10)-sqrt(2)*h1*cos(9*pi/4 0);

v=0:0.1:2;%等值曲线取值

相关文档
最新文档