0

ある場所では周期的であり、他の場所では周期的でない信号があり、それが周期的である範囲 (時間内) を見つけたいと考えています。ここでは元の信号を示すことはできませんが、信号の例を使用して質問を説明します。

信号の例:

vect=[randn([1,500]) sin(x) 1:500]; 
x=linspace(0, 20*Pi, 1000) 

基本的に、信号がxに対して500から1500の間で周期的であることを教えてくれるものが欲しいです。

xcorr関数を使用してみました (ゼロ ラグ ピークを使用しxcorr(y,'unbiased')て見つけ、ゼロ ラグの特定の % 内にある他のピークを見つけて、周期性の領域を定義しましたが、ラグを×範囲。

編集:これまでに使用しているコード

    [c, lags] = xcorr(y,'unbiased');
    lag_zero=find(lags==0)
    [peaks,locs]=findpeaks(c,'MINPEAKHEIGHT',.5*c(lag_zero)); %finding peaks 
    cindex=find(((c(lag_zero)-(0.5*c(lag_zero)))<c) & (c<(c(lag_zero)+(0.5*c(lag_zero)))));
    maxlags=lags(max(cindex));
    [c2,lags2]=xcov(y,y,maxlags,'unbiased'); %this is just to narrow the periodic part down
    plot(lags2,c2);
    period=abs(x(locs(floor((length(locs))/2)))-x(locs(floor(((length(locs))/2)-1))))
4

2 に答える 2

0

最も簡単な方法は、データをウィンドウ処理してから、このような手法を使用して、特定のノイズ フロアを超えるパワーを持つ周波数を見つけることだと思います。この分析は季節性によく似ていますが、期間が異なりますが、それは問題ではありません。Cross Validated のこのリンクをチェックしてください。

于 2013-06-20T15:14:55.370 に答える
0

実行[~,F,T,P] = spectrogram(vect, 128, 120, 128, 1)すると取得できます ここに画像の説明を入力

目視検査では、要素 500 と 1500 の間に単色信号があることがわかります。P値が非常に低い長方形の領域を調べることができます。おそらく を使用したほうがよいでしょう。間隔と頻度を抽出するには、と10*log10(P)を使用します。FT

于 2013-06-20T16:11:59.410 に答える