? Fs=10000; n=0:1000; x=cos(2 * pi* 50 * n/Fs)+cos(2 * pi* 80 * n/Fs)+cos(2 * pi* 100 * n/Fs); %设计高通滤波器[N,wn]=buttord(60 * 2/Fs,75 * 2/Fs,3,15); [b,a]=butter(N,wn) freqz(b,a) y=filter(b,a,x); figure plot(n/Fs,y) axis([0,0.05,-1.5,1.5]) MATLAB 工具箱提供了采用窗函数法设计 FIR 滤波器的函数 fir1 其调用格式为: b=fir1(n,Wn) b=fir1(n,Wn, ’ ftype ’) b=fir1(n,Wn,window) b=fir1(n,Wn, ’ ftype ’,window) 说明: n表示滤波器的阶数, ‘ ftype ’参数代表所设计的滤波器类型: ‘ high ’——高通, ‘ stop ’——带阻滤波器,默认时为低通和带通滤波器; ‘ window ’为窗函数, 是长度为 n+1 的列向量,默认时窗函数自动取 Hamming 窗。例:用窗函数法设计线性相位 FIR 低通数字滤波器,通带截止频率 Wp=0.5 π,阻带截止频率 Ws=0.6 π,阻带衰减不小于 40dB ,通带衰减不大于 3dB. 根据阻带衰减,采用汉宁窗设计滤波器。 MATLAB 程序: Wp=0.5 * pi; Ws=0.6 * pi; wdel=Ws-Wp;% 过度带宽度 N=ceil(6.2 * pi/wdel);% 计算滤波器长度 Wn=(Wp+Ws)/2;% 截止频率 window=hanning(N+1); b=fir1(N,Wn/pi,window); freqz(b,1,512) figure ; n=0:N;stem(n,b)