Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ダウンサンプリング前のフィルター処理

この例は、ダウンサンプリングする前にフィルター処理をして、エイリアシングによる歪みを軽減する方法を示しています。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')

Figure contains an axes object. The axes object with xlabel times pi blank rad/sample, ylabel Magnitude contains an object of type line.

10 次のチェビシェフ I 型ローパス フィルターで信号のフィルター処理をしてから、2 によるダウンサンプリングを行います。元の信号とフィルター処理をしてダウンサンプリングした信号の振幅スペクトルをプロットします。ローパス フィルターが、区間 [-π/2,π/2] の外側のエイリアシング歪みの量を減らします。

y = decimate(b,2,10);
Hy = fftshift(freqz(y,1,nf,'whole'));

hold on
plot(omega/pi,abs(Hy))
legend('Original','Downsampled')

Figure contains an axes object. The axes object with xlabel times pi blank rad/sample, ylabel Magnitude contains 2 objects of type line. These objects represent Original, Downsampled.

参考

| |