如何衡量一個隨機數列的周期性?

給一個正弦波,等距離取樣本點,得到的數列可以認為是周期性很好的數列。

給定一個隨機雜訊,可以直觀的認為周期性不好。

給定一個可能包含雜訊,又可能是周期波,或者是這兩者的疊加的數列,如何描述這個數列的周期性?

一般的,考慮一個任意的數列,如何建立一個對數列的泛函或者統計量,以衡量這個數列在多大程度上是一個周期數列?

我自己建立了一個模型,但效果並不好:假設周期是T,計算以T為間距的項的差的平均值稱為X,求出使得X最小的T. X的大小衡量了周期性強弱,T即反應周期. 但是這個量的性質不好,在周期為t時以t-1做檢驗的T得到的X並不小,而且對於一些混入了輕微雜訊的周期數列就不能得到一個使得X顯著小的T.


請學習一下傅立葉變換,這應該能解答你全部的問題。傅立葉變換將一個函數(或者離散傅立葉變換中的數列)正交分解成不同的頻率分量,告訴你每個頻率分量的大小,根據這個大小就能估計周期性了。

如果你需要考慮非正弦的周期信號,這種信號在頻域上的表現是一組基頻整數倍的分立的譜線,找出這些分立的譜線,然後計算一個「最大公約數」就可以了。

時域的方法也有,常用的是計算信號的自相關係數

frac{int u(t)u(t - T)dt}{int u^2(t) dt}

對於周期信號來說,T取值合適時,自相關係數接近於1,而非周期信號的自相關係數要低一些。自相關對於加性白雜訊在數學上有比較好的性質,自相關係數的最大值大致可以看作是信號功率比例S/(S+N)

一些變形比如說

frac{int (u(t) - u(t - T))^2dt}{int u^2(t) dt}

值越小越接近於周期,這個就跟你的式子差不多了,只不過用的是平方而不是平均值。可以看出它跟上面的相關係數幾乎是一樣的,大約是2 - 2 * 相關係數。

還有一些人會將差值平方進一步改成更銳利的函數來改進精度,比如說改成

int exp(-frac{u(t) - u(t - T)}{sigma^2})dt

(數值越大越接近於周期)等等。有的時候對抵抗非白雜訊有一定幫助。

音頻處理的時候經常用這些方法來查找基音周期,研究生的時候論文就是寫這個。


傅里葉變換可以把時域變換到頻域,信號特點是時域周期,頻率離散,嚴格周期的信號頻域嚴格離散,考察頻域離散性就可以反映時域的周期性


變換到頻域(ω域)就可以了。或者z域,s域,隨便一個域就可以。

還有你建立的這個模型叫自相關係數。


推薦閱讀:

2017年數學建模美賽六種題型怎麼理解,應該怎麼選題,菜鳥怎麼樣才能獲M獎?
數學建模如何當好隊長?

TAG:數學 | 數學建模 | 數字信號處理 |