2014-05-09 50 views
0

通過我的意思是這個時期:如何在MATLAB中查找矢量的週期?

說我有一個載體

v = [1,1,1 , 2,2,2 , 3,3,3]; 
period(v) 

ans = 3 

因爲在每3個項目價值的變化這一載體應該返回3。

我可以簡單地返回值的變化的第一個索引,但我想知道是否有一個內置的功能,最好還與非統一的輸入工作。即最後一個序列可能小於3.

我能找到的最接近的是seqperiod,但它爲此向量返回9(長度)。

感謝您的幫助!

回答

3

如果你知道,期限爲整個數組保持不變,你可以使用diff()函數,並拉出第一個值這樣的位置:

>> diff_out = find(diff(v)); 
>> diff_out(1) 

    ans = 
    3 

或者,如果週期變化,你可以運行一個額外的差異來獲得一個向量來表示變化之間的元素數量,如下所示:

>> diff([0,find(diff(v))]) 
    ans = 

    3  3 
+0

Thanks!對於我的案件時期保持不變,所以這對我很有用,但我仍然想知道是否有內置解決方案。 – jeff

+1

@CengizFrostclaw如果你確定期限保持不變,只需使用'period = find(diff(v),1)'。 – Divakar