概述
function adaptive_filter2(f1,Delta)
length=2000;
M=100; %滤波器的阶数M
Ts=0.0001; %采样间隔
A=1; %幅值
B=2;
f2=f1+Delta; % f2频率
phase=pi/4;
noise=randn(1,length); %高斯白噪声,方差为1,偏差为0
k=1:length;
F1=A*cos(2*pi*f1*k*Ts+phase);
F2=B*cos(2*pi*f2*k*Ts);
F=F1+F2;
X=noise+F1+F2; %输入滤波器的总信号
u1=0.0001; %μ的取值,u越小收敛越慢效果越好,u较大容易出现震荡现象
u2=0.0001;
Weights1=zeros(1,M); %权重矩阵
Weights2=zeros(1,M);
Y1=zeros(1,length);
Y2=zeros(1,length);
error1=zeros(1,length);
error2=zeros(1,length);
for n=M:length
x=X(n:-1:n-M+1);
Y1(n)=x*Weights1';%转置
error1(n)=F1(n)-Y1(n);
Weights1=Weights1+2*u1.*error1(n).*x;
end
for n=M:length
x=X(n:-1:n-M+1);
Y2(n)=x*Weights2';
error2(n)=F2(n)-Y2(n);
Weights2=Weights2+2*u2.*error2(n).*x;
end
figure(1);
subplot(4,1,1);
plot(F1);
title( '原始信号波形 F1');
subplot(4,1,2);
plot(F2);
title( '原始信号波形 F2');
subplot(4,1,3);
title( '混合信号波形 F(F=F1+F2)');
plot(F);
subplot(4,1,4);
plot(X);
title( '混合信号宽带干扰波形 X(X=S+F1+F2)');
figure(2);
subplot(4,1,1);
plot(Y1);
title( '滤波结果 y1')
subplot(4,1,2);
plot(error1);
title( '提取的单频信号波形 F1 的误差error1 ');
subplot(4,1,3);
plot(Y2);
title( '滤波结果 y2')
subplot(4,1,4);
plot(error2);
title( '提取的单频信号波形 F2 的误差error2')
最后
以上就是粗犷花瓣为你收集整理的自适应滤波器提取单频信号实验2的全部内容,希望文章能够帮你解决自适应滤波器提取单频信号实验2所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复