1

おそらく些細な質問ですが、Rパッケージptwの出力として、時間軸の多項式変換を指定する一連の多項式係数(slotwarp.coefに格納されている)があります。例えば

warpcoeff=c(-0.0001357075,1.000147,7.281139e-09,-8.870294e-13,-2.60201e-16,1.671129e-20)

5次多項式変換の場合(ただし、次数は異なる場合があります)。xこれで、この多項式変換を(すべての要素に順番に)適用したい時間値の行列ができました。これを行うための最も簡単で最速の方法は何ですか?(理想的には、xがベクトルまたは行列の場合に両方が機能するはずです)

乾杯、トム

4

1 に答える 1

4

変換を行列の各要素にのみ適用する場合は、次のような再帰関数を作成できます。

my_fn <- function(x, w) {
    idx <- length(w)
    if (idx == 0) return(0)
    o <- x^(idx-1) * w[idx] + my_fn(x, head(w, -1))
}

x <- matrix(1:15, ncol=3)
o <- my_fn(x, warpcoeff)

> o
#          [,1]      [,2]     [,3]
# [1,] 1.000011  6.000747 11.00148
# [2,] 2.000158  7.000894 12.00163
# [3,] 3.000305  8.001041 13.00178
# [4,] 4.000452  9.001188 14.00192
# [5,] 5.000599 10.001335 15.00207

または、次のように使用することもできますReduce

Reduce('+', lapply(0:5, function(idx) x^idx * w[idx+1]))
于 2013-02-19T13:13:59.327 に答える