logo资料库

自适应模拟带通滤波器.docx

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
题目:采用自适应模拟滤波器拟合一个带通滤波器,并与 Matlab 中拟合的带通 滤波器进行对比。 假设滤波器的通带频率为 40Hz,阻带频率为 60Hz,信号的采样率为 500Hz,采 用自适应模拟 FIR 滤波器,结果如下图: 用 Matlab 自带的函数,拟合一个 FIR 带通滤波器,窗函数为汉明窗,得到结果为: 代码: clc close all clear all %% %设计 FIR 滤波器
n=50; w=[40,60]; fs=500; wn=w*2/fs; b_bandpass=fir1(n,wn,'bandpass'); m_bandpass=10*log(abs(fft(b_bandpass))); x_f=0:(fs/length(m_bandpass)):fs/2; figure; plot(x_f,m_bandpass(1:length(x_f))) %axis([0,10,-200,0]); %% %设计巴特沃斯带通滤波器 % wp=[0.05*2*pi,0.1*2*pi]; % ws=[0.01*2*pi,0.15*2*pi]; % Rp=1; % Rs=20; % % [N,Wn]=buttord(wp,ws,Rp,Rs,'s'); % fprintf('巴特沃斯滤波器 N=%4d\n',N); % [bb,ab]=butter(N,Wn,'s'); % W=0:0.01:2; % [Hd,wb]=freqs(bb,ab,W); % figure;plot(wb/pi,10*log(abs(Hd)),'b'); % axis([0,0.5,-20,0]); %% %输入信号产生 N=100; x=0; fl=1; fmax=fl*N; t=0:1/N/5:100; %设置频点 for i=1:N end x=x+sin(2*pi*fl*(i-1)*t); y=0; for i=50:70 end y=y+50*sin(2*pi*fl*i*t);
ss=50; w = 1*ones(ss,length(x)-ss+2); for cont = 1 :length(x)-ss+1 X_input = x(cont+ss-1:-1:cont); error_output= y(cont+ss-1) - X_input*w(:,cont); error_coverror_output(cont) = error_output; delt_grad = -error_output*conj(X_input')/(X_input*X_input.'); w(:,cont+1) = w(:,cont) - 0.02/ss*delt_grad; end %% wm=w(:,length(x)-ss+2); m=10*log(abs(fft(wm))/max(abs(fft(wm)))); x_f=0:(fs/length(m_bandpass)):fs/2; figure; plot(x_f,m(2:length(x_f)+1))
分享到:
收藏