簡體   English   中英

Matlab找到信號的周期性范圍

[英]Matlab find range of periodicity of signal

我在某些地方有一個周期性的信號,而在其他地方則沒有,我希望能夠找到它是周期性的范圍(及時)。 我無法在此處顯示原始信號,但是我將使用示例信號來說明我的問題:

示例信號:

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

我想要一些可以告訴我信號基本上在500到1500之間為x的周期。

我嘗試使用xcorr函數(我使用了xcorr(y,'unbiased') ,然后找到了零延遲峰,並找到了在零延遲一定百分比內的其他峰來定義周期性區域,但我無法計算找出如何將滯后關系回x范圍。

編輯:到目前為止,我正在使用的代碼

    [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))))

我想開始將是窗口中的數據,然后使用類似的技術,最容易的地方這個發現具有功率一定的本底噪聲以上的頻率。 這種分析很像季節性,但是周期不同,但這不是問題。 從交叉驗證中檢查此鏈接

運行[~,F,T,P] = spectrogram(vect, 128, 120, 128, 1) ,您會得到 在此處輸入圖片說明

通過目視檢查,您會發現在元素500和1500之間有一個單色信號。 您可以檢查P的值非常低的矩形區域,最好使用10*log10(P) ,並使用FT提取間隔和頻率。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM