求助一个很复杂的因子如何计算


attachments-2022-06-eCj93pnm62bcfd28bee7e.png


首先以barlen为windowsize计算window的最大最小值(第一个window以当前行作为最后一行,并且size=3,则第一个window为[3,4,4]标黄处,下一个window为滚动window,为标蓝色[3,5,7]),接下来的窗口分别是[6,8,6],[7,8,7]等等。这行,barlen=3,从第一个window一次计算最大最小值,结果为[4,3],[7,3],[8,6],[8,7],[9,7],[9,8]依次计算。各个窗口的最小值依次为[3,3,6,7,7,8,7,5,2](命名为MINARR)。

再根据最小值序列计算X序列(X序列的每个值为MINARR序列往前推 比当前MINARR[M]值小的MINARR值中两次变小的值,没有足够窗口计算,就令X[M]=MINARR[M]),X序列的长度和窗口数量是一致的,现在计算X序列,并解释原因。

X[0]=3,没足够窗口,MINARR[0]=3,所以X[0]=3. 

X[1]=3同理。 

X[2],MINARR[2]为6,向前找比6两次变小的值(要依次往前寻找,不能跳),MINARR[1]为3,3比6小,这是第一次变小,再往前MINARR[0]还是3,相对于MINARR[1]=3没有变小,所以找不到相对于6第二次变小的值,故取第一次变小的值就可以,则X[2]=3。

X[3]=3,MINARR[3]=7,往前找相比于7第二次变小的值,6比7小,3比6小, 所以取3.

X[4]=3,同样逻辑,7不比7小,忽略,往前仍然是6<7,3<6,取3

X[5]=6,MINARR[5]=8,往前找,7<8,7=7,6<7,6是第二次变小的值,所以X[5]=6。

X[6]=6,MINARR[6]=7,往前找,8不小于7,7<8(这是第一次边小)7=7,6<7(第二次变小),所以为6

X[7]=6,跟X[6]计算是一样的逻辑

到此X的计算逻辑很清楚,按相同逻辑计算出X序列全部值。

有了这些值后,开始计算f1, 我们是计算第三行的f1,从第四行的p值(也就是3)开始推演,观察p值什么时候小于上一个窗口的X序列的值。在从第四行(也就是第二个窗口的第一行)3开始,比较窗口为上一个窗口(也就是序号为1的窗口),跟窗口的X值比较(也就是3和X[0]=3比较),看什么时候小于。p的值3->5->7没有小于3的,然后p的值来到6,也即是窗口3的第一行,从6开始跟上一个窗口的X值比,也就是6和X[1]=3比较,6,8,6,同样没有符合小于条件的情况。依次向后比较下去,直到第一次发现p值小于上一个窗口的X值。 记录该p值和初始p值(初始P值就是从哪推演的P值,我们是从第四行的p值推演的,所以初始p为4)的差作为f1的值。在本行f1计算中,p一直到第8个窗口中,6,6,5时, 5<X[7]=6,第一次条件成立。 则f1=5-3=2

请先 登录 后评论

1 个回答

mhxiang

不太懂你的第一段的描述,“首先以barlen为windowsize计算window的最大最小值(第一个window以当前行作为最后一行,并且size=3,则第一个window为[3,4,4]标黄处,下一个window为滚动window,为标蓝色[3,5,7]),接下来的窗口分别是[6,8,6],[7,8,7]等等。这行,barlen=3,从第一个window一次计算最大最小值,”感觉这个MINARR的计算就是与窗口序号有关,按窗口序号分组计算的最小值,这个与barlen有什么关系?


请先 登录 后评论
  • 1 关注
  • 0 收藏,855 浏览
  • ddbuserex 提出于 2022-06-30 09:33

相似问题