如何在MATLAB中找到一个向量的周期?

时间:2014-05-09 16:34:56

标签: matlab vector period seq

在此期间我的意思是:

说我有一个载体

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

ans = 3

此向量应返回3,因为每个第3项的值都会发生变化。

我可以简单地返回值改变的第一个索引,但我想知道是否有内置函数,最好也使用非均匀输入。即最后一个序列可能小于3.

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

如果您知道整个数组的周期保持不变,您可以使用diff()函数并拉出第一个值的位置,如下所示:

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

    ans =
    3

或者,如果周期变化,您可以运行一个额外的差异来获得一个向量,表示更改之间的元素数量,如下所示:

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

   3     3