在matlab中文论坛上songzy41给出的,很有用,留下来:
可以用自适应陷波波器把60HZ的信号过滤出来,程序有
N=1024;
n=(0:N-1)/1500;
x=cos(2*pi*n*60+0.5);
noise=0.5*randn(size(x));
s=x+noise;
subplot 211; plot(n,s);
x1=cos(2*pi*n*60);
x2=sin(2*pi*n*60);
u=0.5;
w1=0.1;
w2=0.1;
e=zeros(1, N);
y=zeros(1, N);
for i=1: N
y(i)=w1 * x1(i)+ w2 * x2(i);
e(i) =x(i)-y(i);
w1=w1+u * e(i) * x1(i);
w2=w2+u * e(i) * x2(i);
end
subplot 212; plot(n,y);
得图如下