このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ダウンサンプリング前のフィルター処理
この例は、ダウンサンプリングする前にフィルター処理をして、エイリアシングによる歪みを軽減する方法を示しています。decimate
または resample
を使用して、1 つの関数でフィルター処理およびダウンサンプリングを行うことができます。または、データをローパス フィルターでフィルター処理をしてから downsample
を使用することができます。基底域スペクトルのサポートが ラジアンより大きい信号を作成します。decimate
を使用して、ダウンサンプリングの前に 10 次のチェビシェフ Ⅰ 型ローパス フィルターで信号をフィルター処理します。
信号を作成して振幅スペクトルをプロットします。
f = [0 0.2500 0.5000 0.7500 1.0000]; a = [1.00 0.6667 0.3333 0 0]; nf = 512; b = fir2(nf-1,f,a); Hx = fftshift(freqz(b,1,nf,'whole')); omega = -pi:2*pi/nf:pi-2*pi/nf; plot(omega/pi,abs(Hx)) grid xlabel('\times\pi rad/sample') ylabel('Magnitude')
10 次のチェビシェフ I 型ローパス フィルターで信号のフィルター処理をしてから、2 によるダウンサンプリングを行います。元の信号とフィルター処理をしてダウンサンプリングした信号の振幅スペクトルをプロットします。ローパス フィルターが、区間 の外側のエイリアシング歪みの量を減らします。
y = decimate(b,2,10); Hy = fftshift(freqz(y,1,nf,'whole')); hold on plot(omega/pi,abs(Hy)) legend('Original','Downsampled')