Signal Processing Toolbox    

リサンプリング

ツールボックスには、オリジナルのサンプルのレートより、高いレート、または、低いレートで信号をリサンプリングするいくつかの関数が用意されています。

演算
関数
リサンプリング付き FIRフィルタ
upfirdn
キュービックスプライン補間
spline
間引き
decimate
内挿
interp
他の1次元内挿
interp1
新しいレートでリサンプリング
resample

関数resampleは、データ列のサンプリングレートを2つの整数の比で表わす任意のレートに変更します。resampleの基本構文は、つぎのとおりです。

この場合、関数はデータ列xをオリジナルのサンプリングレートのp/q倍でリサンプリングします。結果求まるyの長さは、xの長さのp/q倍になります。

リサンプリングの応用例の1つとしては、48 kHz(ディジタルオーディオテープ(DAT)規格)から、44.1 kHz(コンパクトディスク(CD)規格)などのように、ディジタル化された音声信号のあるサンプリングレートから別のサンプリングレートへの変換があります。つぎの例題では、サンプリングレートは異なりますが考え方は同じです。

例題ファイルには、7418 Hzでサンプリングした音声の長さ4001のベクトルが含まれています。

8192 Hzの音声のみ再生可能なワークステーションで、この音声信号を再生するには、つぎのように、関数ratを用いて正しいリサンプリング係数をもたらす整数pおよびqを求めます。

p/q*fs = 8192.05であるため、許容誤差として、0.0001の設定を満足します。8192 Hzにごく近い周波数で信号をリサンプリングするには、つぎのようにします。

resampleは、ローパスフィルタを入力列に適用して、リサンプリングの際のエリアシングを防止します。このフィルタは、関数firlsを用いて、Kaiserウィンドウをベースにして設計されます。構文

により、フィルタの長さと Kaiser ウィンドウのbeta パラメータを制御します。あるいは、関数intfiltを用いて、補間フィルタbを設計し、つぎのように使用します。

関数 decimate、および、関数 interp は、それぞれp = 1およびq = 1を設定した resample と同じ動作をします。これらの関数には、さまざまなアンチエリアシングフィルタ処理オプションが用意されていますが、フィルタ処理によりわずかな信号の遅れが生じます。関数 interp は、q = 1を設定した関数 resample より著しく効率が悪くなります。

ツールボックスには、また、入力列にFIRフィルタを適用し、オリジナルのサンプリングと異なるサンプリングレートでフィルタリングされたデータ列を出力する関数upfirdnを用意しています。詳細については、"マルチレートフィルタバンクの実現"と第7章のupfirdn のリファレンスを参照してください。

MATLAB基本モジュール環境には、不規則間隔データに働く関数splineが含まれます。MATLAB関数interp1は、線形補間やキュービック補間などのさまざまな方法を用いて、補間、あるいはテーブルルックアップ補間を行います。splineおよびinterp1に関する情報については、オンラインのMATLAB Function Reference を参照してください。


  周波数領域ベースのモデリング ケプストラム解析