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 を参照してください。
![]() |
周波数領域ベースのモデリング | ケプストラム解析 | ![]() |