1

私は C++ で次のことを行う関数を書きました: (非常に長い可能性がある) vectorxと thresholdを指定して、そのような、、および≥の部分列をthr見つけます。意図は、グラフの解像度が であるという意味で、と「同じように見える」場所の短い部分列を見つけることです。yxx[1]∈yx[length(x)]∈y∀i∈1:length(y) y[i+1]-y[i]thrxplot(x)plot(x[subsequence])thr

この関数は R パッケージの一部であり、Rcppインターフェイスを使用して C++ 関数を呼び出します。ソースはこちら: https://gist.github.com/kenahoo/8922376。(実際にはdata.frame、単純なベクトルではなく で動作しますが、各列をベクトルとして個別に動作させてから、インデックス シーケンスをマージするのと同じです。)

素敵で効率的な同等のpure-Rソリューションを見つけたいと思います.1つの明らかなアイデアは のようなものですwhich(diff(x)>thr)が、これは適切ではありませんthr.

例:

> set.seed(123)
> x <- cumsum(runif(100, -1, 1))
> y <- downsampleForPlot(data.frame(x=x), 2.5)
> y
[1]   1  11  26  46  57  71  81 100

これにより、次のような近似が生成されます。

> plot(x)
> lines(stepfun(y[-1], x[y], f=0), col='blue')

近似プロット

これに関するアイデアは大歓迎です。

4

0 に答える 0