📄 lunwen_fir.m
字号:
clear,close all;
N=input('输入FIR滤波器的长度N=');
wp=input('输入FIR滤波器的通带截止频率(单位:弧度)wp=');
ws=input('输入FIR滤波器的阻带截止频率(单位:弧度) wp=');
wc=(wp+ws)/2; %确定理想低通滤波器的截止频率
L=ceil(wc*N/(2*pi));
k=0:N-1; M=2*pi/N;
H=u(k)-u(k-L); %构造FIR滤波器的N抽样的频率响应特性
phai=-pi*k*(N-1)/N;
%H(L+1)=0.5;%H(L+2)=0.1065;%H(L+2)=0.031; %用于插入过渡采样点
H=H.*exp(i*phai);
kc=fix(N/2);
for i=0:kc;
H(N-(i))=conj(H(i+2));
end
h=ifft(H,N); %求DFT反变换得到单位冲激响应h(n)
subplot(221) %绘制FIR滤波器的幅度特性
k=0:2*pi/N:2*pi-2*pi/N;
stem(k/pi,abs(H),'k.')
axis([0,2,0,max(abs(H))]); grid on, xlabel('Frequency *pi')
title('The |H(k)|of the FIR lowpass filter')
subplot(222) %绘制单位冲激响应波形
k=0:N-1;
stem(k,h,'k.'),axis([0,N-1,1.1*min(real(h)),1.1*max(real(h))])
xlabel('Time index n'), title('The impulse response h(n) of the FIR filter'), grid on
n=0:2*pi/512:2*pi-2*pi/512; %计算FIR滤波器的幅度响应
subplot(223) %绘制FIR滤波器的幅度响应
Hd=fft(h,512);
plot(n/(pi),abs(Hd)),title('The frequency response |H(ejw)|')
hold on,grid on
k=0:2*pi/N:2*pi-2*pi/N;
plot(k/pi,abs(H),'k.'),axis([0,1,0,1.2*max(abs(H))])
xlabel('Frequency *pi')
subplot(224) %绘制FIR滤波器衰的减幅度特性曲线
plot(n/pi,20*log10(abs(Hd)/max(abs(Hd))),'r-')
title('The frequency response in dB')
axis([0,1,-80,0])
grid on
xlabel('Frequency *pi')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -