计算相邻两个点的乘积看是否小于0,若小于0,则过零点。

比如有10个数据

1 2 3 2 1 -1 -2 -3 -1 1 

第五个数据是1,第六个数据是-1,相乘小于0,因此数据点在五和六之间跨过零点。

类似的第九个数据-1,第十个是1,相乘小于0,因此数据点在九和十之间跨过零点。

基于这些跨过零点的位置,做差*2就是周期。

 

 

如果原始数据震荡强烈,反复越过零点,有几种方法进阶方法。

  1. 按照上面的方法计算,如果在某个值附近找到了多个零点,则对这些接近的值求平均。
  2. 不要计算相邻两个数据点的乘积,而是计算比如i*(i+2)或者i*(i+3)。比如若i*(i+2)<0,则认为零点是i+1;若i*(i+2)<0,则认为零点是i+2。 
  3. 对原始数据做移动平均(Moving Average)。比如有10个数据1 2 3 2 1 -1 -2 -3 -1 1 ,如果对相邻2个数据做滑动平均,会得到9个数据点,第一个是(1+2)/2=1.5,第二个是(2+3)/2=2.5,…,第九个是(-1+1)/2=0。如果对相邻2个点做平均还是有多个零点,则可以对相邻3个做平均,相邻4个做平均,直到只有1个零点。你的原始数据有512个点,所以滑动平均之后少了几个点并不太影响。

 

这三种方法都可以解决上述问题,您可以试试看。

Reminder
OK
作业代写,代写作业,作业辅导,辅导作业,作业问答,美国作业代写,留学生作业,留学生作业代写,数学作业,数学作业代写,统计作业代写,物理作业代写,金融作业代写,大学作业辅导 Keywords: 作业代写 代写作业 作业辅导 辅导作业 作业问答 美国作业代写 留学生作业 留学生作业代写 数学作业 数学作业代写 统计作业代写 物理作业代写 金融作业代写 大学作业辅导