あなたのフィルターは非常に過小評価されているので、あなたのデザインは非常に基本的であると思われます。非常に基本的な方法は、カットオフ周波数$ \ omega_c = 2 \ pi f_c / f_s = 0.4 \ pi $($ f_s $はサンプリング周波数)の理想的なローパスフィルターのインパルス応答を単純に切り捨ててシフトすることです。
$$ h_ {ideal}(n)= \ frac {\ sin(\ omega_c n)} {\ pi n} $$
フィルターは因果関係がある必要があるため、最大値に関して対称になるように、理想的なインパルス応答をシフトおよび切り捨てる必要があります。
$$ h(n)= \ frac {\ sin(\ omega_c(n-10))} { \ pi(n-10)}、\ quad n = 0,1、\ ldots、20 \ tag {1} $$
式(1)により、21個のフィルター係数が得られます$ h(n)理想的なローパスフィルター応答に近似する原因となるFIRフィルターの$。フィルタの次数は20であることに注意してください。
単純なMatlab / Octaveコードは次のようになります:
n = -10:10; omc = 0.4*pi; % normalized cut-off frequency in rad h = sin(omc*n)./(pi*n); % impulse response h(11) = omc/pi; % correct NaN value at n=0 H = fft(h,1024); % complex frequency response f = 1000/1024*(0:512); % FFT frequency grid up to fs/2 plot(f,abs(H(1:513))); % plot magnitude of frequency response
コメント