| Signal Processing Toolbox |
リサンプリング
ツールボックスには、オリジナルのサンプルのレートより、高いレート、または、低いレートで信号をリサンプリングするいくつかの関数が用意されています。
| 演算 |
関数 |
| リサンプリング付き FIRフィルタ |
|
| キュービックスプライン補間 |
|
| 間引き |
|
| 内挿 |
|
| 他の1次元内挿 |
|
| 新しいレートでリサンプリング |
|
関数resampleは、データ列のサンプリングレートを2つの整数の比で表わす任意のレートに変更します。resampleの基本構文は、つぎのとおりです。
y = resample(x,p,q)
この場合、関数はデータ列xをオリジナルのサンプリングレートのp/q倍でリサンプリングします。結果求まるyの長さは、xの長さのp/q倍になります。
リサンプリングの応用例の1つとしては、48 kHz(ディジタルオーディオテープ(DAT)規格)から、44.1 kHz(コンパクトディスク(CD)規格)などのように、ディジタル化された音声信号のあるサンプリングレートから別のサンプリングレートへの変換があります。つぎの例題では、サンプリングレートは異なりますが考え方は同じです。
例題ファイルには、7418 Hzでサンプリングした音声の長さ4001のベクトルが含まれています。
clear
load mtlb
whos
Name Size Bytes Class
fs 1x1 8 double array
mtlb 4001x1 32008 double array
Grand total is 4002 elements using 32016 bytes
fs
fs =
7418
8192 Hzの音声のみ再生可能なワークステーションで、この音声信号を再生するには、つぎのように、関数ratを用いて正しいリサンプリング係数をもたらす整数pおよびqを求めます。
[p,q] = rat(8192/fs,.0001) p = 127 q = 115
p/q*fs = 8192.05であるため、許容誤差として、0.0001の設定を満足します。8192
Hzにごく近い周波数で信号をリサンプリングするには、つぎのようにします。
y = resample(mtlb,p,q);
resampleは、ローパスフィルタを入力列に適用して、リサンプリングの際のエリアシングを防止します。このフィルタは、関数firlsを用いて、Kaiserウィンドウをベースにして設計されます。構文
resample(x,p,q,l,beta)
により、フィルタの長さと Kaiser ウィンドウのbeta
パラメータを制御します。あるいは、関数intfiltを用いて、補間フィルタbを設計し、つぎのように使用します。
resample(x,p,q,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 を参照してください。
| 周波数領域ベースのモデリング | ケプストラム解析 |