自适应滤波

来源:互联网 发布:幻萌网络知乎 编辑:程序博客网 时间:2024/05/16 06:15
自适应滤波存在于信号处理、控制、图像处理等许多不同领域,它是一种智能更有针对性的滤波方法,通常用于去噪。

%****************************************************************************************% % 创建两个信号Mix_Signal_1 和信号 Mix_Signal_2 %%***************************************************************************************Fs = 1000; %采样率N = 1000; %采样点数n = 0:N-1;t = 0:1/Fs:1-1/Fs; %时间序列 Signal_Original_1 =sin(2*pi*10*t)+sin(2*pi*20*t)+sin(2*pi*30*t); Noise_White_1 = [0.3*randn(1,500), rand(1,500)]; %前500点高斯分部白噪声,后500点均匀分布白噪声Mix_Signal_1 = Signal_Original_1 + Noise_White_1; %构造的混合信号Signal_Original_2 = [zeros(1,100), 20*ones(1,20), -2*ones(1,30), 5*ones(1,80), -5*ones(1,30), 9*ones(1,140), -4*ones(1,40), 3*ones(1,220), 12*ones(1,100), 5*ones(1,20), 25*ones(1,30), 7 *ones(1,190)]; Noise_White_2 = 0.5*randn(1,1000); %高斯白噪声Mix_Signal_2 = Signal_Original_2 + Noise_White_2; %构造的混合信号

%****************************************************************************************% % 信号Mix_Signal_1 和 Mix_Signal_2 分别作自适应滤波%%***************************************************************************************%混合信号 Mix_Signal_1 自适应滤波figure(6);N=1000; %输入信号抽样点数Nk=100; %时域抽头LMS算法滤波器阶数u=0.001; %步长因子%设置初值yn_1=zeros(1,N); %output signalyn_1(1:k)=Mix_Signal_1(1:k); %将输入信号SignalAddNoise的前k个值作为输出yn_1的前k个值w=zeros(1,k); %设置抽头加权初值e=zeros(1,N); %误差信号%用LMS算法迭代滤波for i=(k+1):N XN=Mix_Signal_1((i-k+1):(i)); yn_1(i)=w*XN'; e(i)=Signal_Original_1(i)-yn_1(i); w=w+2*u*e(i)*XN;endsubplot(4,1,1);plot(Mix_Signal_1); %Mix_Signal_1 原始信号axis([k+1,1000,-4,4]);title('原始信号');subplot(4,1,2);plot(yn_1); %Mix_Signal_1 自适应滤波后信号axis([k+1,1000,-4,4]);title('自适应滤波后信号');%混合信号 Mix_Signal_2 自适应滤波N=1000; %输入信号抽样点数Nk=500; %时域抽头LMS算法滤波器阶数u=0.000011; %步长因子%设置初值yn_1=zeros(1,N); %output signalyn_1(1:k)=Mix_Signal_2(1:k); %将输入信号SignalAddNoise的前k个值作为输出yn_1的前k个值w=zeros(1,k); %设置抽头加权初值e=zeros(1,N); %误差信号%用LMS算法迭代滤波for i=(k+1):N XN=Mix_Signal_2((i-k+1):(i)); yn_1(i)=w*XN'; e(i)=Signal_Original_2(i)-yn_1(i); w=w+2*u*e(i)*XN;endsubplot(4,1,3);plot(Mix_Signal_2); %Mix_Signal_1 原始信号axis([k+1,1000,-10,30]);title('原始信号');subplot(4,1,4);plot(yn_1); %Mix_Signal_1 自适应滤波后信号axis([k+1,1000,-10,30]);title('自适应滤波后信号');


 
0 0
原创粉丝点击