31 信号処理
この章では、Octave で使用できる信号処理および高速フーリエ変換関数について説明します。高速フーリエ変換は、Octave の構築方法に応じて、 FFTWまたはFFTPACKライブラリを使用して計算されます。
: y = fft (x)
: y = fft (x, n)
: y = fft (x, n, dim)
高速フーリエ変換 (FFT) アルゴリズムを使用して、 xの離散フーリエ変換を計算します。
FFT は配列の最初の非シングルトン次元に沿って計算されます。したがって、xが行列の場合、xの各列に対して FFT を計算します。 fft (x)
2 つの引数で呼び出される場合、nは使用するxの要素数を指定する整数、またはその値を無視するように指定する空の行列である必要があります。nがFFT が計算される次元より大きい場合、 x はサイズ変更され、ゼロで埋められます。そうでない場合、nが FFT が計算される次元より小さい場合、 x は切り捨てられます。
3 つの引数で呼び出された場合、dimは FFT が実行される行列の次元を指定する整数になります。
参照: ifft、fft2、fftn、fftw。
:x = 倍数 (y)
:x = 倍数 (y, n)
:x = 倍数 (y, n, dim)
高速フーリエ変換 (FFT) アルゴリズムを使用して、 yの逆離散フーリエ変換を計算します。
逆 FFT は、配列の最初の非シングルトン次元に沿って計算されます。したがって、yが行列の場合、yの各列に対して逆 FFT を計算します。 ifft (y)
2 つの引数で呼び出される場合、n は、使用するyの要素数を指定する整数、またはその値を無視するように指定する空の行列である必要があります。nが逆 FFT が計算される次元より大きい場合、 y はサイズ変更され、ゼロで埋められます。そうでない場合、nが逆 FFT が計算される次元より小さい場合、y は切り捨てられます。
3 つの引数で呼び出された場合、dimは逆 FFT が実行される行列の次元を指定する整数になります。
参照: fft、ifft2、ifftn、fftw。
: B = fft2 (A)
: B = fft2 (A, m, n)
高速フーリエ変換 (FFT) アルゴリズムを使用して、 Aの 2 次元離散フーリエ変換を計算します。
オプションの引数mとn は、使用するAの行数と列数を指定するために使用できます。これらのいずれかがAのサイズより大きい場合、A のサイズが変更され、ゼロが埋め込まれます。
Aが多次元行列の場合、 Aの各 2 次元サブ行列は個別に扱われます。
参照: ifft2、fft、fftn、fftw。
: A = ifft2 (B)
: A = ifft2 (B, m, n)
高速フーリエ変換 (FFT) アルゴリズムを使用して、 Bの逆 2 次元離散フーリエ変換を計算します。
オプションの引数mとn は、使用するBの行数と列数を指定するために使用できます。これらのいずれかがBのサイズより大きい場合、B のサイズが変更され、ゼロが埋め込まれます。
Bが多次元行列の場合、 Bの各 2 次元サブ行列は個別に扱われます。
参照: fft2、ifft、ifftn、fftw。
: B = fftn (A)
: B = fftn (A, size)
高速フーリエ変換 (FFT) アルゴリズムを使用して、 Aの N 次元離散フーリエ変換を計算します。
オプションのベクトル引数size は、使用する配列の次元を指定するために使用できます。size の要素が A の対応する次元より小さい場合、FFTを実行する前にAの次元が切り捨てられます。そうでない場合、 sizeの要素が 対応する次元より大きい場合は、 A のサイズが変更され、ゼロが埋め込まれます。
参照: ifftn、fft、fft2、fftw。
:A = 場合 (B)
:A = 場合 (B, size)
高速フーリエ変換 (FFT) アルゴリズムを使用して、 Bの逆 N 次元離散フーリエ変換を計算します。
オプションのベクトル引数size は、使用する配列の次元を指定するために使用できます。size の要素が B の対応する次元より小さい場合、逆FFTを実行する前にBの次元が切り捨てられます。そうでない場合、 sizeの要素が 対応する次元より大きい場合は、 B のサイズが変更され、ゼロが埋め込まれます。
参照: fftn、ifft、ifft2、fftw。
OctaveはFFTWライブラリを使用してFFT計算を実行します。Octaveが起動してFFTWライブラリを初期化すると、システム全体のファイル(Unixシステムでは通常、/etc/fftw/wisdom) には、FFT 計算を高速化するために役立つ情報が含まれています。この情報は、wisdomと呼ばれます。システム全体のファイルにより、 FFTWライブラリを使用するすべてのアプリケーション間で、wisdom を共有できます。
関数を使用して、知恵を生成して保存します。FFTWライブラリ ( Unixfftwシステムの場合)と一緒に提供されるユーティリティを使用すると、Octave によって生成された知恵をシステム全体の知恵ファイルに追加することもできます。 fftw-wisdom
: method = fftw ("planner")
: fftw ("planner", method)
: wisdom = fftw ("dwisdom")
: fftw ("dwisdom", wisdom)
: nthreads = fftw ("threads")
: fftw ("threads", nthreads)
FFTWの知恵データを管理します。
ウィズダムデータを使用すると、FFTの計算を大幅に高速化できますが、計算の初期コストがかかります。FFTWライブラリが初期化されると、 システム全体のウィズダムファイル(通常は /etc/fftw/wisdom) を使用すると、Octave 以外のアプリケーション間で知恵を共有できます。あるいは、このfftw関数を使用して知恵をインポートすることもできます。たとえば、
知恵= fftw ("dwisdom")
Octaveが使用する既存の知恵を文字列wisdomに保存します。この文字列はファイルに保存し、それぞれコマンドsave とloadコマンドを使用して復元できます。この既存の知恵は次のように再インポートできます。
fftw ("dwisdom",知恵)
知恵が空の文字列の場合、使用された知恵はクリアされます。
フーリエ変換の計算中に、さらなる知恵が生成されます。この知恵が生成される方法もfftw関数によって制御されます。知恵を処理する方法は 5 つあります。
"estimate"
特定の計算の最適な手段の実行時の測定は実行されず、単純なヒューリスティックを使用して (おそらく最適ではない) プランが選択されることを指定します。この方法の利点は、プランの生成にオーバーヘッドがほとんどまたはまったくないことです。これは、一度だけ計算されるフーリエ変換に適しています。
"measure"
この場合、変換を実行するためのさまざまなアルゴリズムが考慮され、実行時間に基づいて最適なものが選択されます。
"patient"
と似ています"measure"が、より広範囲のアルゴリズムが考慮されます。
"exhaustive"
と同様です"measure"が、変換の処理に使用できるすべてのアルゴリズムが考慮されます。
"hybrid"
アルゴリズムの実行時の測定はコストがかかる可能性があるため、これは妥協案であり、"measure"8192 のサイズまでの変換には が使用され、それを超えるとメソッド"estimate"が使用されます。
デフォルトのメソッドは です"estimate"。現在のメソッドは、
メソッド= fftw ("プランナー")
または、
fftw ("プランナー",メソッド)
計算された知恵は Octave を再起動すると失われることに注意してください。ただし、上記のように知恵データをファイルに保存すると、知恵データを再ロードできます。保存された知恵ファイルは効率的ではなく、知恵を計算する意味が失われるため、異なるプラットフォームでは使用しないでください。
プランの計算と変換の実行に使用されるスレッドの数は、次のように設定できます。
fftw ("スレッド", NTHREADS )
この機能を使用するには、Octave をマルチスレッドFFTWサポート付きでコンパイルする必要があることに注意してください。デフォルトでは、現在のプロセスで使用可能な (論理) プロセッサの数または3 (いずれか小さい方) が使用されます。
参照: fft、ifft、fft2、ifft2、fftn、ifftn。
: c = fftconv (x, y)
: c = fftconv (x, y, n)
計算に FFT を使用して 2 つのベクトルを畳み込みます。
c = fftconv (x, y)長さが のベクトルを返します 。x と y が 2 つの多項式の係数ベクトルである場合、返される 値は積多項式の係数ベクトルになります。 length (x) + length (y) - 1
計算では関数を呼び出して FFT を使用しますfftfilt。オプションの引数nが指定されている場合は、N ポイントの FFT が使用されます。
参照: deconv、conv、conv2。
: y = fftfilt (b, x)
: y = fftfilt (b, x, n)
FFT を使用して FIR フィルタbでxをフィルタします。
xが行列の場合、行列の各列をフィルタリングします。
オプションの 3 番目の引数nを指定すると、fftfiltオーバーラップ追加方式を使用して、 N ポイント FFT でx をbでフィルタリングします。FFT サイズは 2 の偶数乗で、 bの長さ以上である必要があります。指定されたn がこれらの基準を満たさない場合は、自動的に最も近い値に調整されます。
参照: filter、filter2。
:y = フィルター (b, a, x)
:フィルター[y, sf] = (b, a, x, si)
:フィルター[y, sf] = (b, a, x, [], dim)
:フィルター[y, sf] = (b, a, x, si, dim)
データxに 1 次元デジタル フィルターを適用します。
filter次の線形、時間不変差分方程式の解を返します。
ニューメキシコ
SUM a(k+1) y(nk) = SUM b(k+1) x(nk) (1<=n<=length(x)の場合)
0 = 0 0 = 0
ここで、N=長さ(a)-1、M=長さ(b)-1です。結果は、 xの最初の非シングルトン次元 、または指定されている場合はdimで計算されます。
この式の同等の形式は次のようになります。
ニューメキシコ
y(n) = - SUM c(k+1) y(nk) + SUM d(k+1) x(nk) 1<=n<=length(x) の場合
1 = 1 0 = 0
ここでc = a/a(1)、d = b/a(1)である。
4 番目の引数siが指定されている場合は、それがシステムの初期状態として取得され、最終状態が sfとして返されます。状態ベクトルは、最長係数ベクトルの長さから 1 を引いた長さに等しい列ベクトルです。siが指定されていない場合、初期状態ベクトルはすべてゼロに設定されます。
Z 変換の観点から見ると、y は離散時間信号x を次の有理システム関数によって特徴付けられるシステムに 渡した結果です。
ま
合計d(k+1)z^(-k)
0 = 0 です。
H(z) = ---------------------
いいえ
1 + SUM c(k+1) z^(-k)
1 = 1 です
参照: filter2、fftfilt、freqz。
:y = フィルター2 (b, x)
:y = フィルター2 (b, x, shape)
2次元FIRフィルタbをxに適用します。
引数の形状が指定されている場合は、目的の形状の配列を返します。可能な値は次のとおりです。
"full"
フィルタリングする前に、 x のすべての辺をゼロで 埋めます。
"same"
パディングなしのx(デフォルト)
"valid"
フィルタリング後に xをトリムして、エッジ効果が含まれないようにします。
これは、パラメータを反転し、b を180 度回転した、畳み込みの単なるバリエーションであることに注意してください。
参照: conv2。
:頻度[h, w] = (b, a, n, "whole")
:頻度[h, w] = (b)
:頻度[h, w] = (b, a)
:頻度[h, w] = (b, a, n)
:h = 頻度 (b, a, w)
:頻度[h, w] = (…, Fs)
:頻度 (…)
分子係数と分母係数がそれぞれbとaである有理 IIR フィルタの複素周波数応答hを返します。
応答は0 から 2*pi までの n 個の角周波数で評価されます。
出力値wは周波数のベクトルです。
aが省略された場合、分母は 1 であると見なされます (これは単純な FIR フィルターに対応します)。
nが省略された場合、値は 512 とみなされます。計算を高速化するには、 n を少数の小さな素数に因数分解する必要があります。
4 番目の引数"whole"が省略された場合、応答は 0 から pi の間の周波数で評価されます。
freqz (b, a, w)
ベクトルwの特定の周波数での応答を評価します。 wの値はラジアンで測定されます。
[…] = freqz (…, Fs)
サンプリング レート Fsを想定して、周波数をラジアンではなく Hz で返します。特定の周波数wでの応答を評価する場合 、それらの周波数はラジアンではなく Hz で要求する必要があります。
freqz (…)
hの振幅と位相応答を返すのではなく、プロットします。
freqz_plotも参照してください。
: freqz_plot (w, h)
: freqz_plot (w, h, freq_norm)
hの振幅と位相応答をプロットします。
オプションのfreq_norm引数が true の場合、周波数ベクトル w は正規化されたラジアン単位になります。freq_norm が false の場合、または指定されていない場合、w はヘルツ単位で測定されます。
freqzも参照してください。
:y = シンク (x)
sinc関数を計算します。
sin (pi*x) / (pi*x) を返します。
:b = アンラップ (x)
:b = アンラップ (x, tol)
:b = アンラップ (x, tol, dim)
tolより大きいジャンプを削除するために、必要に応じて 2*pi の倍数を加算または減算してラジアン位相を展開します。
tol のデフォルトは pi です。
unwrap次元dimに沿って動作します。dim が指定されていない場合は、デフォルトで最初の非シングルトン次元に設定されます。
unwrapすべての非有限入力値 (Inf、NaN、NA) を無視します。
: arch_fit [a, b] = (y, x, p, iter, gamma, a0, b0)
Engle のオリジナルの ARCH 論文のスコアリング アルゴリズムを使用して、 ARCH 回帰モデルを時系列yに適合させます。
モデルは
y(t) = b(1) * x(t,1) + ... + b(k) * x(t,k) + e(t)、
h(t) = a(1) + a(2) * e(t-1)^2 + ... + a(p+1) * e(tp)^2
ここで、e(t)はN(0, h(t))であり、時刻t-1までの時系列ベクトル yとt までの(通常の)回帰変数の行列x が与えられます。残差分散の回帰の次数はpによって指定されます。
正の整数kで呼び出された場合、ARCH( k , p )プロセスをフィットします。つまり、xのt番目の行を次のようにして実行します。 arch_fit (y, k, p)
[1, y(t-1), ..., y(tk)]
オプションで、スコアリングアルゴリズム の反復回数iter、更新係数gamma、および初期値a0とb0 を指定できます。
: y = arch_rnd (a, b, t)
AR係数bとCH係数aを持つ長さtのARCHシーケンスをシミュレートします。
結果y(t)はモデルに従う
y(t) = b(1) + b(2) * y(t-1) + ... + b(lb) * y(t-lb+1) + e(t)、
ここで、 e(t)は、時刻t-1までのyが与えられたとき、 N(0, h(t))であり、
h(t) = a(1) + a(2) * e(t-1)^2 + ... + a(la) * e(t-la+1)^2
: arch_test [pval, lm] = (y, x, p)
線形回帰モデルの場合
y = x * b + e
条件付き異分散性がないという帰無仮説と対立仮説CH( p )のラグランジュ乗数(LM)検定を実行する。
つまり、モデルは
y(t) = b(1) * x(t,1) + ... + b(k) * x(t,k) + e(t)、
t-1までのyとtまでのxが与えられた場合、 e (t)はN(0, h(t))となり、
h(t) = v + a(1) * e(t-1)^2 + ... + a(p) * e(tp)^2、
そして帰無仮説はa(1) == … == a(p) == 0である。
2番目の引数がスカラー整数kの場合、次のk次の線形自己回帰モデルで同じテストを実行します。
[1, y(t-1), ..., y(t- k )]
xのt行目として。
帰無仮説の下では、LM は近似的に自由度pのカイ二乗分布を持ち 、 pval は検定の p値 (LM におけるこの分布の CDF から 1 を引いた値)です。
出力引数が指定されていない場合は、p値が表示されます。
: x = arma_rnd (a, b, v, t, n)
ARMA モデルのシミュレーションを返します。
ARMAモデルは次のように定義されます。
x(n) = a(1) * x(n-1) + ... + a(k) * x(nk)
+ e(n) + b(1) * e(n-1) + ... + b(l) * e(nl)
ここで、kはベクトルaの長さ、lはベクトルbの長さ、e は分散vのガウス白色ノイズです。この関数は長さtのベクトルを返します。
オプションパラメータnは初期化に使用されるダミーx ( i )の数を指定します。つまり、長さt + nのシーケンスが生成され、x ( n +1: t + n )が返されます。nが省略された場合は 、n = 100が使用されます。
: x = autoreg_matrix (y, k)
時系列 (ベクトル) yが与えられた場合、最初の列に 1 が入り、他の列に yの最初のk 個の遅延値が含まれる行列を返します。
つまり、t > kの場合、 は結果の t 番目の行になります。 [1, y(t-1), …, y(t-k)]
結果の行列は、自己回帰の回帰行列として使用できます。
:c = バートレット (m)
長さmの Bartlett (三角形) ウィンドウのフィルタ係数を返します 。
Bartlett ウィンドウの定義については、たとえば、AV Oppenheim および RW Schafer の「 Discrete-Time Signal Processing」を参照してください。
:c = ブラックマン (m)
:c = ブラックマン (m, "periodic")
:c = ブラックマン (m, "symmetric")
長さmのブラックマン ウィンドウのフィルタ係数を返します 。
オプションの引数"periodic"が指定された場合、ウィンドウの周期形式が返されます。これは、最後の係数が削除された長さ m +1 のウィンドウに相当します。オプションの引数は、 "symmetric"2 番目の引数を指定しないことに相当します。
ブラックマン ウィンドウの定義については、たとえば、AV Oppenheim および RW Schafer の「 Discrete-Time Signal Processing」を参照してください。
:y = トレンド除去 (x, p)
xがベクトルの場合、データxからp 次多項式の最適な適合を削除します。 detrend (x, p)
xが行列の場合は、 xの各列に対して同じことを行います。 detrend (x, p)
2 番目の引数pはオプションです。指定されていない場合は、値 1 が想定されます。これは、線形トレンドを削除することに相当します。
多項式の次数は文字列として指定することもできます。その場合、 p は"constant"( に対応p=0) または"linear"( に対応)のいずれかである必要がありますp=1。
参照: polyfit。
: diffpara [d, dd] = (x, a, b)
統合時系列の差分パラメータの 推定値dを返します。
[2*pi*a/t, 2*pi*b/T]からの頻度が推定に使用されます。b が省略された場合は、間隔 [2*pi/T, 2*pi*a/T] が使用されます。bとaの両方が省略された場合は、a = 0.5 * sqrt (T)およびb = 1.5 * sqrt (T) が使用されます。ここで、 Tはサンプル サイズです。x が行列の場合、各列の差分パラメータが推定されます。
上記の間隔内のすべての周波数の推定値がddに返されます。
dの値は単にddの平均です。
参考文献: PJ Brockwell & RA Davis. Time Series: Theory and Methods . Springer 1987.
:ダービンレビンソン[newphi, newv] = (c, oldphi, oldv)
Durbin-Levinson アルゴリズムの 1 つのステップを実行します。
ベクトルc[gamma_0, …, gamma_t]は遅延 0 からtまでの自己共分散を指定し 、oldphi はc ( t -1) に基づく係数を指定し、 oldv は 対応する誤差を指定します。
oldphiとoldv を省略すると、アルゴリズムの 1 からtまでのすべてのステップが実行されます。
: y = fftshift (x)
: y = fftshift (x, dim)
および 関数で使用するためにベクトルxのシフトを実行し、周波数 0 をベクトルまたは行列の中心に移動します。 fftifft
x がdt間隔のN時間サンプルに対応するN要素のベクトルである場合、 周波数に対応する fftshift (fft (x))
f = [ -(天井*1 ] * df
ここでdf = 1 / (N * dt)です。
xが行列の場合、行と列についても同じことが当てはまります。xが 配列の場合、各次元についても同じことが当てはまります。
オプションのdim引数を使用すると、順列が発生する次元を制限できます。
参照: ifftshift。
: x = iftshift (y)
: x = iftshift (y, dim)
関数のアクションを元に戻しますfftshift。
偶数の長さxの場合、fftshiftはそれ自身の逆数ですが、奇数の長さの場合は若干異なります。
参照: fftshift。
: fd = fractdiff (x, d)
分数差(1-L)^dxを計算します。ここで、L は ラグ演算子を表し、d は-1 より大きいです。
:c = ハミング (m)
:c = ハミング (m, "periodic")
:c = ハミング (m, "symmetric")
長さmのハミングウィンドウのフィルタ係数を返します。
オプションの引数"periodic"が指定された場合、ウィンドウの周期形式が返されます。これは、最後の係数が削除された長さ m +1 のウィンドウに相当します。オプションの引数は、 "symmetric"2 番目の引数を指定しないことに相当します。
ハミング ウィンドウの定義については、たとえば、AV Oppenheim および RW Schafer の「 Discrete-Time Signal Processing」を参照してください。
:c = ハニング (m)
:c = ハニング (m, "periodic")
:c = ハニング (m, "symmetric")
長さmのハニングウィンドウのフィルタ係数を返します。
オプションの引数"periodic"が指定された場合、ウィンドウの周期形式が返されます。これは、最後の係数が削除された長さ m +1 のウィンドウに相当します。オプションの引数は、 "symmetric"2 番目の引数を指定しないことに相当します。
ハニング ウィンドウの定義については、たとえば、AV Oppenheim および RW Schafer の「 Discrete-Time Signal Processing」を参照してください。
:H = ハースト (x)
再スケールされた範囲統計を使用して サンプルxのハースト パラメータを推定します。
xが行列の場合、パラメータは列ごとに推定されます。
: pp = pチップ (x, y)
: yi = pチップ (x, y, xi)
点xとyの区分3次エルミート補間多項式 (pchip) を返します。
2 つの引数で呼び出された場合は、特定のポイントで多項式を評価するため に使用できる区分多項式ppを返します。ppval
3 番目の入力引数で呼び出されると、pchip点xiにおける pchip 多項式を評価します。3 番目の呼び出し形式は と同等です 。 ppval (pchip (x, y), xi)
変数x は、長さnの厳密に単調なベクトル(増加または減少)でなければなりません。
y はベクトルまたは配列のいずれかになります。yがベクトルの場合、長さはxと同じnでなければなりません。yが配列の場合、 yのサイズは次の形式にする必要があります。 配列は内部的に行列に再形成され 、先頭の次元は で指定され、この行列の各行は個別に扱われます。 これは と正反対ですが、 MATLAB との互換性のために行われることに注意してください 。 [s1, s2, …, sk, n]s1 * s2 * … * skinterp1
参照: spline、ppval、mkpp、unmkpp。
:ピリオドグラム[Pxx, w] = (x)
:ピリオドグラム[Pxx, w] = (x, win)
:ピリオドグラム[Pxx, w] = (x, win, nfft)
:ピリオドグラム[Pxx, f] = (x, win, nfft, Fs)
:ピリオドグラム[Pxx, f] = (…, "range")
:ピリオドグラム (…)
xのピリオドグラム(パワースペクトル密度)を返します。
可能な入力は次のとおりです。
x
データ ベクトル。x が実数値の場合、片側スペクトルが推定されます。x が複素数値の場合、またはを指定する場合 、完全なスペクトルが推定されます。 "range""twosided"
勝つ
ウィンドウの重みデータ。ウィンドウが空または指定されていない場合は、デフォルトの長方形ウィンドウが使用されます。それ以外の場合は、ピリオドグラムを計算する前にウィンドウが信号 ( ) に適用されます。ウィンドウ データは、xと同じ長さのベクトルである必要があります。 x .* win
んふ
頻度ビンの数。デフォルトは256またはxの長さ ( max (256, 2.^nextpow2 (length (x))))より大きい2の次のべき乗です。nfftが入力の長さより大きい場合、xはnfftの長さまでゼロで埋められます。
フス
サンプリング レート。デフォルトは 1 です。
範囲
スペクトルの範囲。 "onesided"[0:nfft/2+1]からスペクトルを計算します。 "twosided"[0:nfft-1]からスペクトルを計算します。
オプションの 2 番目の出力wは正規化された角周波数です。片側計算の場合、nfft が偶数の場合はwは [0, pi] の範囲になり、 nfftが奇数の場合は [0, pi) の範囲になります。同様に、両側計算の場合、wはnfftに応じて [0, 2*pi] または [0, 2*pi) の範囲になります 。
サンプリング周波数Fsが指定されている場合、片側計算では出力周波数 f は[0, Fs /2] または [0, Fs /2)の範囲になります。両側計算では範囲は [0, Fs ) になります。
出力なしで呼び出されると、ピリオドグラムが現在の図ウィンドウにすぐにプロットされます。
参照: fft。
:y = サイントーン (freq, rate, sec, ampl)
サンプリングレートrateで、長さsec秒、振幅amplで、周波数freqの正弦音を返します。
引数freqとampl は共通サイズのベクトルである場合があります。
デフォルトは、 rate = 8000、sec = 1、ampl = 64 です。
参照: 正弦波。
:y = 正弦波 (m, n, d)
i番目の要素が で指定された m要素のベクトルを返します。 sin (2 * pi * (i+d-1) / n)
dのデフォルト値は 0 で、 nのデフォルト値はmです 。
参照: sinetone。
:sde = スペクトル_adf (c)
:sde = スペクトル_adf (c, win)
:sde = スペクトル_adf (c, win, b)
自己共分散のベクトル c、ウィンドウ名win、帯域幅bが与えられた場合、スペクトル密度推定値を返します。
ウィンドウ名 (例:"triangle"または ) は、"rectangle"と呼ばれる関数を検索するために使用されますwin_lw。
winを省略すると、三角形ウィンドウが使用されます。
bが省略された場合はが使用されます。 1 / sqrt (length (x))
参照: spectral_xdf。
:sde = スペクトルxdf (x)
:sde = スペクトルxdf (x, win)
:sde = スペクトルxdf (x, win, b)
データ ベクトルx、ウィンドウ名win、帯域幅bを指定してスペクトル密度推定値を返します。
ウィンドウ名 (例:"triangle"または ) は、"rectangle"と呼ばれる関数を検索するために使用されますwin_sw。
winを省略すると、三角形ウィンドウが使用されます。
bが省略された場合はが使用されます。 1 / sqrt (length (x))
参照: spectral_adf。
:savg = スペンサー (x)
xの各列のスペンサーの 15 ポイント移動平均を返します 。
: y = stft (x)
: y = stft (x, win_size)
: y = stft (x, win_size, inc)
: y = stft (x, win_size, inc, num_coef)
: y = stft (x, win_size, inc, num_coef, win_type)
: stft [y, c] = (…)
win_sizeデータ ポイントのウィンドウとincポイントの増分を適用して、 num_coef係数を持つ ベクトルxの短時間フーリエ変換を計算します。
フーリエ変換を計算する前に、次のいずれかのウィンドウが適用されます。
"hanning"
勝利タイプ = 1
"hamming"
勝利タイプ = 2
"rectangle"
勝利タイプ = 3
ウィンドウ名は文字列として渡すことも、win_type番号で渡すこともできます。
指定されていない引数には、次のデフォルトが使用されます: win_size = 80、inc = 24、num_coef = 64、 win_type = 1。
y = stft (x, …)num_coef の正の周波数に従ってフーリエ係数の絶対値を返します。
[y, c] = stft (x, …)STFT 行列y全体と、関数に必要なウィンドウ サイズ、増分、ウィンドウ タイプを含む3 要素のベクトルcsynthesisを返します 。
参照: 合成。
:x = 合成 (y, c)
短時間フーリエ変換yと、ウィンドウ サイズ、増分、ウィンドウ タイプを指定する 3 要素ベクトルcから信号を計算します。
yとcの値は次のように導出できる。
[ y , c ] = stft ( x , ...)
stftも参照してください。
:ユールウォーカー[a, v] = (c)
自己共分散のベクトルc[gamma_0, …, gamma_p]が与えられた場合、Yule-Walker 推定値を使用して AR (p) モデルを適合します。
AR 係数aとホワイトノイズの分散 vを返します。