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')

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')

参考

| |