在此期间我的意思是:
说我有一个载体
v = [1,1,1 , 2,2,2 , 3,3,3];
period(v)
ans = 3
此向量应返回3,因为每个第3项的值都会发生变化。
我可以简单地返回值改变的第一个索引,但我想知道是否有内置函数,最好也使用非均匀输入。即最后一个序列可能小于3.
我能找到的最接近的是seqperiod
,但它会为此向量返回9(长度)。
感谢您的帮助!
答案 0 :(得分:3)
如果您知道整个数组的周期保持不变,您可以使用diff()函数并拉出第一个值的位置,如下所示:
>> diff_out = find(diff(v));
>> diff_out(1)
ans =
3
或者,如果周期变化,您可以运行一个额外的差异来获得一个向量,表示更改之间的元素数量,如下所示:
>> diff([0,find(diff(v))])
ans =
3 3