コンテンツにスキップ

GNU Octave 2.1.x 日本語マニュアル/デジタル信号処理

出典: フリー教科書『ウィキブックス(Wikibooks)』

30 デジタル信号処理

[編集]

いつの日か、オクターブが、もっと多くのデジタル信号処理関数を含むことができればと考えています。もし、あなたがこの領域で、オクターブを充実することに貢献できるなら、どうか、bug@octave.orgへコンタクトしてください。

detrend (x, p)

[編集]

                          [Function File]

もし、xがベクトルなら、detrend (x, p)は、データxから、データにベストフィットするpオーダの多項式を除去します。 もし、xが行列なら、detrend (x, p)は、xの各列について上記と同じことを行います。 二番目の引数はオプションです。 もし、これが指定されないと、1が仮定されます。 これは、直線的なトレンドを除去することに相当します。

fft (a, n, dim)

[編集]

                          [Loadable Function]

FFTPACKのサブルーチンを用いて、FFTを計算します FFTは、アレイの最初の単元ではない次元に沿って計算されます。 従って、aが行ベクトルなら、fft (a)は行ベクトルaのFFTを計算します。 もし、aが列ベクトルなら、fft (a)は列ベクトルaのFFTを計算します。 また、aが行列なら、fft (a)は行列aの列ごとのFFTを計算します。 もし、2つの引数で呼ばれると、nは整数と仮定され使用される要素数とみなされます、また空のマトリックスが指定されるとその値は無視されます。 もし、nが行列の次元より大きいと、この大きさでFFTは計算されます、そのとき、aはリサイズされゼロが充当されます。 さもなければ、もしnが行列の次元より小さければ、この大きさでFFTが計算されます、そのとき、行列aはnに削り取られます。 もし、3つの引数で呼び出されると、dimは、FFTが実行される行列の次元を決める整数となります。

ifft (a, n, dim)

[編集]

                          [Loadable Function]

FFTPACKのサブルーチンを用いて、インバースFFTを計算します。 インバースFFTは、アレイの最初の単元ではない次元に沿って計算されます。 従って、もしaが行列なら、ifft (a)は、行列aの列ごとのインバースFFTを計算します。 もし、2つの引数で呼ばれると、nは整数と仮定され使用される要素数とみなされます、また空のマトリックスが指定されるとその値は無視されます。 もし、nが行列の次元より大きいと、この大きさでインバースFFTは計算されます、そのとき、aはリサイズされゼロが充当されます。 さもなければ、もしnが行列の次元より小さければ、この大きさでインバースFFTが計算されます、そのとき、行列aはnに削り取られます。 もし、3つの引数で呼び出されると、dimは、インバースFFTが実行される行列の次元を決める整数となります。

fft2 (a, n, m)

[編集]

                          [Loadable Function]

FFTPACKのサブルーチンを用いて、2次元FFTを計算します 。 オプション引数、nとmは使用される行と列の要素数とみなされます。 もし、いずれも行列のサイズより大きいと、aはリサイズされゼロが充当されます。 もし、aが多次元マトリックスであれば、それぞれ、aの2次元のマトリックスが別々に扱われます。

ifft2 (a, n, m)

[編集]

                          [Loadable Function]

FFTPACKのサブルーチンを用いて、2次元インバースFFTを計算します 。 オプション引数、nとmは使用される行と列の要素数とみなされます。 もし、いずれも行列のサイズより大きいと、aはリサイズされゼロが充当されます。 もし、aが多次元マトリックスであれば、それぞれ、aの2次元のマトリックスが別々に扱われます。

fftn (a, size)

[編集]

                          [Loadable Function]

FFTPACKのサブルーチンを用いて、N次元FFTを計算します 。 オプションのベクトル引数size は、使用するアレイの次元を指定するとみなされます。 もし、エレメントのサイズが対応する次元より大きいとFFTを実行に先だって次元はaは切り取られます。 さもなければ、もしエレメントのサイズが対応する次元より大きければ、aはリサイズされゼロがパディングされます。

ifftn (a, size)

[編集]

                          [Loadable Function]

FFTPACKのサブルーチンを用いて、N次元インバースFFTを計算します 。 オプションのベクトル引数size は、使用するアレイの次元を指定するとみなされます。 もし、エレメントのサイズが対応する次元より大きいとFFTを実行に先だって次元はaは切り取られます。 さもなければ、もしエレメントのサイズが対応する次元より大きければ、aはリサイズされゼロがパディングされます。

fftconv (a, b, n)

[編集]

                          [Loadable Function]

ベクトルaとbのコンボリューションを返します。結果のベクトルの長さは

length (a) + length (b) - 1

です。 もし、aとbが2つの多項式の係数ベクトルであると、返される値は多項式の積の係数ベクトルになります。 この計算は、関数fftfiltを呼ぶことによりFFTを使用します。 もし、オプショナルな引数nが指定されると、N点のFFTが使われます。

fftfilt (b, x, n)

[編集]

                          [Loadable Function]

引数2つの場合、fftfiltはxをFFTを使ってFIRフィルターします。 3番目のオプショナルな引数nを与えられると、fftfiltはxをbでフィルタするためにn点FFTを使ったオーバーラップ加算法を使用します。 もし、xが行列だと、マトリックスの各列をフィルターします。

y = filter (b, a, x)

[編集]

                          [Loadable Function]

[y, sf] = filter (b, a, x, si)

[編集]

                          [Loadable Function]

以下の、線形時間不変差分方程式の解を返します。



ここで かつ です。 この方程式に等価なフォームは次のとおりです。



ここで かつ

もし4番目の引数siが供給されると、これはシステムの初期状態とみなされます、そして最終状態はsfに返されます。 状態ベクトルは列ベクトルでその長さは、もっとも長い係数ベクトル引く1に等しくなります。 初期状態ベクトルは、全て0にセットされます。 z変換の意味で、yは離散時間信号xの以下の有理システム関数を通過後の結果を返します:


[h, w] = freqz (b, a, n, "whole")

[編集]

                          [Function File]

IIRフィルターの複素周波数レスポンスhを返します。IIRフィルターの分子と分母の係数はそれぞれbとaで与えます。 IIRフィルターの周波数レスポンスは角周波数0から2*piの間のn点で評価されます 出力値wは周波数のベクトルです。 もし、4番目の引数が省略されると周波数レスポンスは周波数0からpiの間で評価されます。 もし、nが省略されると512点 が仮定されます。 もし、aが省略されると分母は1と仮定されます。(シンプルなFIRフィルタに該当します) 高速に計算をするために、nは素数のうちの小さな数でなければなりません。

h = freqz (b, a, w)
[編集]

                          [Function File]

ベクトルwの中の特定周波数における応答を評価します。 wの値はラディアン単位です。

[...] = freqz (..., Fs)
[編集]

                          [Function File]

サンプリングレートFsを仮定して、ラディアンではなくHzで周波数応答を返します もし、あなたが周波数wを指定してレスポンスを評価するなら、周波数はラディアンではなくHzを指定しなければなりません。

freqz (...)
[編集]

                          [Function File]

hのパスバンド、ストップバンドと位相応答を値を返すのではなくプロットします。 hのパスバンド、ストップバンドと位相応答をプロットします。

sinc (x)

[編集]

                          [Function File]


sinc関数を返します。

b = unwrap (a, tol, dim)

[編集]

                          [Function File]

位相aに、ラディアン単位の2*piの倍数を加算することにより、tolより大きい位相ジャンプを取り除き位相を連続にします(アンラップ)。 tolのデフォルトはpiです。 Unwrapは、aの単元では無い次元でアンラップを行います。 オプショナルな次元を指定する引数dimが与えられると、データは指定された次元に沿ってアンラップされます。

[a, b] = arch_fit (y, x, p, iter, gamma, a0, b0)

[編集]

                          [Function File]

ARCH (Auto Regressive Conditional Heteroscedasticity)モデルを、ARCH 論文に発表されたEngleのスコアリング・アルゴリズムを使用して、時系列データyにフィットします。 モデルは:



ここで、e(t) は N(0, h(t))です、 時系列ベクトルyは時間t-1まで与えられ、再帰のマトリックスxは時間tまで与えられます。 残留分散の再帰のオーダーはpで指定されます。 もし、arch_fit (y, k, p)が正の整数kと共に呼び出されると、ARCH(k, p)プロセスにフィットします。 換言すれば、以下に与えられるt次の行xで、上記を行います:



オプションとして、繰返しの数iter、更新ファクターgamma、そしてスコアリングアルゴリズムための初期値a0とb0を指定することができます。

arch_rnd (a, b, t)

[編集]

                          [Function File]

AR係数bとCH係数a、長さtのARCHシーケンスをシミュレートします、 すなわち結果y(t)は、以下のモデルに従います。



ここでe(t)はN(0; h(t))であり、時刻t-1までyが与えられます。



[pval, lm] = arch_test (y, x, p)

[編集]

                          [Function File]

線形回帰モデル、



のラグランジュの未定乗数法(LM)帰無仮説検定を、CH(p)の代わりに不等分散性の条件無しで行います。 すなわちモデルは、



yは時刻t-1までの値を与えられ、xは時刻tまでの値を与えられます。e(t)はN(0; h(t))です。



そして、ヌルとは、



第2の引数がスカラー整数kである場合、kオーダーの線形自己回帰モデルに対して同じ検定を行います、 すなわち、



xのt次の列として。 ヌルの条件のもとで、LM近似は自由度pのカイ二乗分布をもちます、そしてpvalは検定のp-値(LMにおいて、この分布のCDFから1引いた値)です。 もし、出力引数が与えられないと、p-値が表示されます。

arma_rnd (a, b, v, t, n)

[編集]

                          [Function File]

ARMAモデルのシミュレーションを返します。



ここで、kはベクトルaの長さで、またlはベクトルbの長さで、eは分散vの白色ガウスノイズです。 この関数は、長さlのベクトルを返します。 オプショナルパラメータnは、初期化に使われるダミー変数x(i)の数を与えます。 つまり、長さt+nのシーケンスが生成され、x(n+1:t+n)が返されます。 もしnが省略されると、n= 100が使われます。

autocor (x, h)

[編集]

                          [Function File]

ベクトルxのタイムラグhの自己相関を返します。 もしhが省略された場合、自己相関がすべて計算されます。 xがマトリックスである場合、各列の自己相関が計算されます

autocov (x, h)

[編集]

                          [Function File]

ベクトルxのタイムラグhの自己共分散を返します。 もしhが省略された場合、自己共分散がすべて計算されます。 xがマトリックスである場合、各列の自己共分散が計算されます

autoreg_matrix (y, k)

[編集]

                          [Function File]

時系列(ベクトル)yが与えられると、先頭の列は1で、他の列はyの先頭からkラグ値のマトリックスを返します。 すなわち、t > kで



は、結果のt次の行です。 結果のマトリックスは、自己回帰のリグレッサー・マトリックスとして使われます。

bartlett (m)

[編集]

                          [Function File]

長さmのBartlett (三角)窓のフィルター係数を返します。 Bartlett窓の定義は、以下を参照してください。

A.V.Oppenheim & R. W. Schafer,"Discrete-Time Signal Processing"

blackman (m)

[編集]

                          [Function File]

長さmのBlackman窓のフィルター係数を返します。 Blackman窓の定義は、以下を参照してください。

A.V.Oppenheim & R. W. Schafer,"Discrete-Time Signal Processing"

[d, dd] = diffpara (x, a, b)

[編集]

                          [Function File]

インテグレート・タイムシリーズの、差分パラメータの推定値dを返します。 周波数

が推定に使われます。 もしbが省略されると、区間

が使われます。 もし、aとbが両方省略されると、

が使われます、ここでTはサンプルサイズです。 もし、xがマトリックスだと、それぞれの列の差分パラメータが推定されます。 区間における全ての周波数推定値はddに返されます。 dの値は、単にddの平均値です。

参照: Brockwell, Peter J. & Davis, Richard A. Time Series: Theory and Methods Springer 1987.

durbinlevinson(c, oldphi, oldv)

[編集]

                          [Function File]

Durbin-Levinsonアルゴリズムのワンステップを実行します。 ベクトルcは、自己共分散を定義します。

ラグ0からtで、oldphiはc(t-1)に基づく係数を定義します、そしてoldvは対応する誤差を定義します。 oldphi と oldvが省略されると、1からtまでのアルゴリズムの全てのステップが実行されます。

fftshift (v)

[編集]

                          [Function File]

fftshift (v, dim)

[編集]

                          [Function File]

fftとifft関数に使われるベクトルあるいはマトリックスvの循環的シフトを実行します。fftshiftの結果、vの左端にある周波数0のデータは中心に移動します。 もし、ベクトルvが時間間隔DtでサンプルされたN個のサンプルに対応した要素数Nのベクトルだと、 fftshift (fft (v))は、以下の周波数に対応します。



もし、vがマトリックスだと、行と列で同じ値を保持します。 もし、vがアレイだと、同じ次元で同じ値を保持します。 オプショナルなdim引数は、並べ替えを起こす次元の制限に使われます。

fractdiff (x, d)

[編集]

                          [Function File]

分数差分(fractional differences)を計算します。

ここで、Lはラグ・オペレータを記述し、dは-1より大きい値です。

hamming (m)

[編集]

                          [Function File]

長さmのHamming窓のフィルター係数を返します。 Hamming窓の定義は、以下を参照してください。

A.V.Oppenheim & R. W. Schafer,"Discrete-Time Signal Processing"

hanning (m)

[編集]

                          [Function File]

長さmのHanning窓のフィルター係数を返します。 Hanning窓の定義は、以下を参照してください。

A.V.Oppenheim & R. W. Schafer,"Discrete-Time Signal Processing"

hurst (x)

[編集]

                          [Function File]

統計的にレンジを再スケールされたサンプルxの、Hurstパラメータを推定します。

periodogram (x)

[編集]

                          [Function File]

サンプルサイズnのデータマトリックスのピリオドグラムを返します。

rectangle_lw (n, b)

[編集]

                          [Function File]

方形ラグ窓です。 このサブ関数は、スペクトル密度推定に使われます。

rectangle_sw (n, b)

[編集]

                          [Function File]

方形スペクトル窓です。 このサブ関数は、スペクトル密度推定に使われます。

sinetone (freq, rate, sec, ampl)

[編集]

                          [Function File]

振幅ampl、長さsec秒、サンプリングレートrata、周波数freqのサイントーンを返します、 引数freqとamplは同じサイズのベクトルです。 デフォルトは、rate=8000、sec = 1、ampl = 64です。

sinewave (m, n, d)

[編集]

                          [Function File]

i番目の要素が

である、m要素のベクトルを返します。 dのデフォルト値は0です、そしてnのデフォルト値はmです。

spectral_adf (c, win, b)

[編集]

                          [Function File]

バンド幅b、自己共分散c、窓関数名winを与えられたベクトルの、スペクトル密度推定を返します。 win_swを呼ぶときに窓名は例えば『三角』または『方形』が使われます、 もし、winが省略されると、三角窓が使われます。もしbが省略されると、

が使われます。

spectral_xdf (x, win, b)

[編集]

                          [Function File]

バンド幅b、窓関数名win、データベクトルxを与え、スペクトル密度推定を返します。 win_swを呼ぶときに窓関数名は例えば『triangle(三角窓)』または『rectangle(方形窓)』が使われます、 もし、winが省略されると、三角窓が使われます。もしbが省略されると、

が使われます。


spencer (x)

[編集]

                          [Function File]

x各列のSpencerによる15ポイント移動平均を返します。

[y, c] = stft (x, win_size, inc, num_coef, w_type)

[編集]

                          [Function File]

長さwin_sizeの窓関数でウィンドウを行い、num_coef係数で、incポイントのインクリメントを適用する、ベクトルxの短時間フーリエ変換を計算します。 フーリエ変換を計算する前に、次のウィンドウのうちの1つが適用されます:

hanning w_type = 1
hamming w_type = 2
rectangle w_type = 3

窓関数名は文字列として、あるいはw-タイプの数字によってstftへ渡すことができます。 引数がすべて指定されなければ、次のデフォルトが使用されます:

win_size = 80,
inc= 24,
num_coef = 64,
w_type = 1.

y = stft (x, ...)

[編集]

                          [Function File]

正の周波数の num_coef によるフーリエ係数の絶対値を返します。

[y, c] = stft (x, ...)

[編集]

                          [Function File]

ウィンドウ・サイズ、インクリメントおよびウィンドウ・タイプを含んでいる3つの要素ベクトルc、およびSTFTマトリックスy全体を返します。これらはsynthesis関数(合成関数)の計算に必要です。

synthesis (y, c)

[編集]

                          [Function File]

短時間のフーリエ変換yと、ウィンドウ・サイズ、インクリメントおよびウィンドウ・タイプを指定する3要素のベクトルcから、信号を計算します。 yとcの値は、以下から計算できます。

[y, c] = stft(x , ...)

triangle_lw (n, b)

[編集]

                          [Function File]

三角ラグスペクトル・サブ窓関数です。 サブ関数はスペクトル密度推定に使用されます。

triangle_sw (n, b)

[編集]

                          [Function File]

三角スペクトル・サブ窓関数です。 サブ関数はスペクトル密度推定に使用されます。

[a, v] = yulewalker (c)

[編集]

                          [Function File]

以下の自己共分散ベクトルCが与えられた条件で、AR(p)モデルをYule-Walker推定でフィットします。

AR係数aとホワイトノイズの分散vを返します。