OctaveでFIRフィルタ2(LPF)

FIRフィルタのシュミレーション2

方形窓を使用し、遮断周波数1/2Fs(1/2Pi)
信号時間は-25〜25
タップ数-21〜21(43タップ)

理想フィルタの方形波のインパルス応答(フーリエ逆変換)


よってインパルス応答は
L=25
n=[-L:L]
wc=pi/2
hd=(wc/pi)*sinc(n*wc/pi) %インパルス応答
plot(n,hd)
理想フィルタの方形波のインパルス応答波形


インパルス応答に方形窓をかける

M=10
N=2*M+1
win=boxcar(N) %方形窓選択
winz=[zeros(1,L-M) win' zeros(1,L-M)]'
h=hd.*winz' %窓をかけたインパルス応答
plot(n,h)


方形窓の周波数応答(フーリエ変換)のGain表示

-π〜πの間を1024間隔で表示
w=linspace(-pi,pi,1024)
Win=freqz(win,1,w)
maxWin=max(abs(Win))
plot(w,20*log10(abs(Win)/maxWin))


フィルタの周波数応答のGain表示

H=freqz(h,1,w)
plot(w,20*log10(abs(H)))


Octave全体のソース

%方形窓 LP FIRの設計
%タップ数21 信号時間範囲-25から25
L=25
n=[-L:L]
wc=pi/2
hd=(wc/pi)*sinc(n*wc/pi) %生のインパルス応答
%plot(n,hd)
M=10
N=2*M+1
win=boxcar(N) %方形窓選択
winz=[zeros(1,L-M) win' zeros(1,L-M)]'
h=hd.*winz' %窓をかけたインパルス応答
%plot(n,h)
%周波数特性
w=linspace(-pi,pi,1024)
Win=freqz(win,1,w)
maxWin=max(abs(Win))
%plot(w,20*log10(abs(Win)/maxWin))
H=freqz(h,1,w)
plot(w,20*log10(abs(H)))