Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
cspect
相関法により2つの離散時間信号の間で推定する 両側相互スペクトル
呼び出し手順
[sm [,cwp]]=cspect(nlags,npoints,wtype,x [,y] [,wpar]) [sm [,cwp]]=cspect(nlags,npoints,wtype,nx [,ny] [,wpar])
引数
- x
ベクトル, 最初の信号のデータ.
- y
ベクトル, 二番目の信号のデータ.
y
を 省略した場合,x
に等しいと仮定されます(自己相関). 指定された場合,x
と同じ数の要素を有している必要が あります.- nx
スカラー :
x
信号の点の数. この場合, 信号xのセグメントはgetx
という名前のユーザ定義の関数 により読み込まれます (下記参照).- ny
スカラー :
y
信号の点の数. この場合,y
のセグメントがgety
という名前のユーザ定義関数により読み込まれます (下記参照). 指定された場合,ny
はnx
に 等しくする必要があります.- nlags
相関遅延の数 (正の整数)
- npoints
変換する点の数 (正の整数)
- wtype
ウインドウ型
're'
: 矩形'tr'
: 三角形'hm'
: ハミング'hn'
: ハニング'kr'
: カイザー,この場合,wpar 引数を指定する必要があります'ch'
: チェビシェフ, この場合, wpar 引数を指定する必要があります
- wpar
カイザーおよびチェビシェフ ウインドウに関するオプションパラメータ:
'kr':
wpar は厳密に正の数である必要があります
'ch':
wpar
は要素数2のベクトル[main_lobe_width,side_lobe_height]である必要があります. ただし,
0<main_lobe_width<.5
, およびside_lobe_height>0
- sm
正規化された周波数の間隔
[0,1]
において パワースペクトルを推定します. 大きさnpoints
の行配列です. 自己相関関数の場合は実数, 相互相関関数の場合は複素数の配列です.- cwp
チェビシェフウインドウの場合は,チェビシェフウインドウのパラメータ の未指定のもの. 指定されていないチェビシェフウインドウのパラメータ
説明
2つの信号x
および y
の
信号の相互スペクトル,そうでない場合は x
を計算します.
スペクトル密度は相関法により得られます.
相関法は自己/相互相関関数の修正された推定値の フーリエ変換としてスペクトル推定を計算します. この自己/相互相関修正推定は, データの場合はオーバーラップしたサブ区間から 反復的に計算する自己相関関数の推定値と, この後,結果を得るためのこれらの推定値の平均化 からなります.
ウインドウの点数は
2*nlags-1
です.
バッチ処理の場合,
x
とy
のデータは,
ユーザ定義関数getx
およびgety
によりセグメント毎に読み込むことができます.
これらの関数は以下の呼び出し手順を有します:
xk=getx(ns,offset)
および
yk=gety(ns,offset)
ただし, ns
はセグメントの大きさ,
offset
は信号全体の最初のセグメント要素の
添字です.
警告
5.0.2までのバージョンのScilabでは,返り値は 現在の値の絶対値でした.
参考文献
Oppenheim, A.V., and R.W. Schafer. Discrete-Time Signal Processing, Upper Saddle River, NJ: Prentice-Hall, 1999
例
rand('normal');rand('seed',0); x=rand(1:1024-33+1); //eqfirでローパスフィルタを作成m nf=33;bedge=[0 .1;.125 .5];des=[1 0];wate=[1 1]; h=eqfir(nf,bedge,des,wate); //有色のデータを得るために白色のデータをフィルタ処理 h1=[h 0*ones(1:max(size(x))-1)]; x1=[x 0*ones(1:max(size(h))-1)]; hf=fft(h1,-1); xf=fft(x1,-1);yf=hf.*xf;y=real(fft(yf,1)); sm=cspect(100,200,'tr',y); smsize=max(size(sm));fr=(1:smsize)/smsize; plot(fr,log(sm))
Report an issue | ||
<< corr | spectral_estimation | czt >> |