求设计滤波器。本人想设计一滤波器,已知频响,即FIR滤波器综合自适应模...
发布网友
发布时间:2024-04-19 12:53
我来回答
共1个回答
热心网友
时间:2024-04-22 14:00
fs=200;%注意采样率应该大于最大频率的2倍多,注意刚好两倍效果也不好
t = (0:500)/ fs ;
sl = sin(2*pi*15*t) ;
s2 = sin(2*pi*55*t) ;
s3 = sin(2*pi*75*t) ;
s =sin(2*pi*15*t) + sin(2*pi*55*t ) +sin(2*pi*75*t) ;
% axes('position', [0.1 0.43 0.5 .23] )
subplot(411),plot(t,s) ;
% axis( [0 1 -4 4] )
xlabel ('time/ Second', 'fontsize' ,8)
ylabel ('time wave','fontsize',8)
%set(gca ,'fontsize',8)
%generate a 38 _ order FIR bandpass filter ,
%band width is 30Hz- 60Hz
%设计的带通滤波器
b =fir1(38,[0.30 0.60]) ;%改变滤波器阶数38
[h,f] =freqz(b,1,512) ;
% axes('position' , [0.1 0.76 0.5 .23] )
subplot(412),plot( f*100/pi ,20*log10(abs(h)))
% axis( [0 100 -100 0] )
xlabel ('frequency/ Hz','fontsize',8)
ylabel('magresponse/Db', 'fontsize',8)
% set(gca,'fontsize',8) % select s2 sig n al f r oms
sf =filter(b,1,s) ;%滤波后的信号
% axes('position' , [0.1 0.1 0.5 .23] )
subplot(413),plot(t, sf)
% axis( [0.2 1 -0.1 0.1] )
xlabel ('time/Second','fontsize',8)
ylabel ('time wave' , 'fontsize' ,8)
% set (gca ,'fontsize',8)
subplot(414),plot(t, s2)
xlabel('原始信号时间')
% axis( [0 5 -2 2] )
%滤波前后的幅值
siglength=length(s);
halflength=floor(siglength/2);
f=fs*(0:halflength)/siglength;
aq=fft(s,siglength);
pq=aq.*conj(aq)/siglength;
figure
% halflength=floor(length(t)/2);
% f=fs*(0:halflength)/length(t);
% subplot(211),plot(f,pq(1:halflength+1));
subplot(211),plot(f,pq(1:halflength+1));
title('滤波前的功率谱')
ah=fft(sf,siglength);
ph=ah.*conj(ah)/siglength;
subplot(212),plot(f,ph(1:halflength+1));
title('滤波后的功率谱')