(* 2020/1/15 lowpass.nb *)

(* エッジ周波数 (離散信号の) *)

omega=0.5

(* 理想的なローパスフィルターの単位インパルス応答*)

h[n_]:=omega/Pi Sinc[n omega]

Plot[h[x],{x,-100,100},PlotRange->All]

ListPlot[Table[h[n],{n,-100,100}],PlotRange->All]

(* 有限項で打ち切った近似フィルターの周波数特性 *)

draw[J_]:=Plot[Sum[h[n]Exp[-I n t],{n,-J/2,J/2}],{t,-Pi,Pi},PlotRange->All]

g0=draw[100]

(* 目標としたローパスフィルターの周波数特性はこうだった *)

g1=Plot[If[Abs[x]≤omega,1,0],{x,-Pi,Pi},PlotStyle->Red]

Show[g0,g1]

(* hann 窓 *)

w[x_]:=(1-Cos[2 Pi x])/2

Plot[w[x],{x,0,1}]

drawhann[J_]:=ListPlot[Table[{n,w[n/J-1/2]},{n,-J/2,J/2}]]

drawhann[100]

(* hann窓をかけたフィルターの周波数特性 *)

draw2[J_]:=Plot[Sum[h[n]w[n/J-1/2]Exp[-I n t],{n,-J/2,J/2}],{t,-Pi,Pi},PlotRange->All]

g2=draw2[100]

Show[g1,g2]