Signal Processing Toolbox    
decimate

データ列に対するサンプリングレートの低減(間引き)

表示

詳細

間引きにより、データ列のオリジナルのサンプリングレートを、より低いレートにします。これは、補間の逆の操作です。間引き過程では、ローパスフィルタで入力データをフィルタ処理し、得られた平滑化信号を、より低いレートでサンプリングします。

y = decimate(x,r) は、ファクタrを使って、xのサンプリングレートを低減します。間引きされたベクトルyは、入力ベクトルxの長さの1/rに短縮されます。デフォルトでは、decimateは、8次のローパスChebyshev I型フィルタを使用します。これは、入力列を順方向と逆方向の両方でフィルタ処理し、位相歪みを除去しますが、設定したフィルタ次数を2回適用したことになります。

y = decimate(x,r,n) は、n次Chebyshevフィルタを使用します。数値的に不安定となるため、13次を越える次数は避けるべきです。13次を越える場合、MATLABはワーニングメッセージを表示します。

y = decimate(x,r,'fir') は、Chebyshev IIRフィルタの代わりに30点FIRフィルタを使用します。この場合、decimateは、片方向でのみ入力列をフィルタ処理します。この手法では、メモリの消費が節約されるため、長いデータ列を処理するのに有効です。

y = decimate(x,r,n,'fir') は、長さnのFIRフィルタを使用します。

例題

信号の間引き処理により、サンプリング間隔を4倍にします。

オリジナルの信号と間引き後の信号を表示します。

アルゴリズム

decimateでは、つぎのように参考文献[1の間引きアルゴリズム8.2および8.3を使用します。

  1. ローパスフィルタを設計します。デフォルトでは、decimateは、正規化されたカットオフ周波数0.8/rと0.05 dBの通過帯域リップルをもつChebyshev I型フィルタを使用します。firオプションを付けると、decimateは、fir1を使ったカットオフ周波数1/rをもつローパスFIRフィルタを設計します。
  2. FIRフィルタの場合、片方向のみ入力ベクトルにフィルタを適用します。IIRフィルタの場合、filtfiltを使って順方向と逆方向にフィルタを適用します。
  3. r点おきに選択することにより、フィルタ処理したデータをリサンプリングします。

診断

rが整数でない場合、decimateは、つぎのエラーメッセージを表示します。

nが13次を越えるIIRフィルタを設定している場合、decimateは、つぎのワーニングメッセージを表示します。

参考
interp
ローパスフィルタを使って、サンプリングレートの増加(補間)
resample
任意のファクタによるサンプリングレートの変更
spline
キュービックスプライン補間(MATLAB Function Referenceを参照)
upfirdn
FIRフィルタの適用とサンプリングレート変換

参考文献

[1] IEEE. Programs for Digital Signal Processing. IEEE Press. New York: John Wiley & Sons, 1979. Chapter 8.


 dct deconv