| Signal Processing Toolbox | ![]() |
表示
xhat=cceps(x) [xhat,nd]=cceps(x) [xhat,nd,xhat1]=cceps(x) [...]=cceps(x,n)
詳細
ケプストラム解析は、音声処理やホモモロヒックフィルタリングにおいて、最も一般的に適用される非線形信号処理手法です(参考文献[1)。
xhat = cceps(x)
は、(実数と仮定される)デ−タ列xの複素ケプストラムを出力します。入力は、線形位相項を適用することで、±
ラジアンで位相の不連続性が全くないように変更されます。すなわち、必要であれば、入力は
ラジアンでゼロ位相をもつように、(ゼロが付加された後)いくつかのサンプルを巡回してシフトします。
[xhat,nd] = cceps(x)
は、複素ケプストラムを求める前に、xに付加する(巡回)遅れのサンプル数ndを出力します。
[xhat,nd,xhat1] = cceps(x)
は、改良した根算出のアルゴリズムを使って計算した複素セプストラムをxhat1に出力します。この方法(参考文献[1] の795ページ)は、単位円上に零点をもたない短いデータ列に対して有効です。これらの信号に対して、xhat1は、xhatの検証としても使うことができます。
[...] = cceps(x,n)
は、xが長さnになるようにゼロを付加して、xについて長さnの複素ケプストラムを出力します。
アルゴリズム
ccepsは、その基本形式では、参考文献[2]のアルゴリズム7.1をMファイルで実現するものです。Fortranプログラムでは冗長な表現も、MATLABコードでは、つぎの3行で表せます。
h=fft(x); logh=log(abs(h)) + sqrt(-1)*rcunwrap(angle(h)); y=real(ifft(logh));
rcunwrapは、unwrapの特殊型であり、位相から直線部を取り去ります。
参考
|
逆複素セプストラム |
|
Hilbert変換 |
|
実数ケプストラムと最小位相復元 |
|
位相角の連続性 |
参考文献
[1] Oppenheim, A.V., and R.W. Schafer. Discrete-Time Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1989.
[2] IEEE. Programs for Digital Signal Processing. IEEE Press. New York: John Wiley & Sons, 1979.
| buttord | cell2sos | ![]() |