代码之家  ›  专栏  ›  技术社区  ›  Anonymous Webuser

计算集合中每个系列都已定义的连续点数

  •  0
  • Anonymous Webuser  · 技术社区  · 7 年前

    如果我有两个(或更多…)“稀疏”序列(即,不一定在每一时刻都定义)和特定的时间范围,我可以使用什么技巧在“同步间隔”(即,其中 全部的 是否定义了系列的?

    e、 g.对于以下三个系列:

        t: 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
       ----------------------------------------------------
       s0: 1  -  -  1  6  -  2  -  2  8  -  9  0  -  -  -
       s1: 3  -  -  4  0  -  3  2  3  3  -  1  1  -  -  7
       s2: 1  -  -  5  9  -  2  4  -  3  -  2  4  4  -  -
           ^-----------------^        ^--------^
    count: 1........2..3....[4]       1.....2.[3]
    

    我们将找到在“同步间隔”内定义的最多4个数据点

    1 回复  |  直到 7 年前
        1
  •  0
  •   Anonymous Webuser    7 年前

    经过多次实验,我得出了一个解决方案——假设两个系列s0和s1(尽管这可以推广到任意数量的系列):

    $NUM_SERIES = 2
    $NUM_SERIES_RECIPROCAL = 1/2
    sum = sumSeries(isNonNull(s0),isNonNull(s1))
    
    removeBelowValue(
      derivative(
        transformNull(
          keepLastValue(
            multiplySeries(
              transformNull(
                keepLastValue(
                  integral(
                    scale(
                      removeBelowValue(sum, $NUM_SERIES),
                      $NUM_SERIES_RECIPROCAL
                    )
                  )
                ),
                0
              ),
              scale(
                removeAboveValue(
                  derivative(
                    keepLastValue(
                      removeBelowValue(
                        sum,
                        1
                      )
                    )
                  ),
                  -1
                ),
                -1
              )
            )
          ),
          0
        )
      ),
      1
    )