Ich versuche, diese Annäherung der temperierten fraktionalen Differenzierung zu beschleunigen. Dies steuert den langen/quasi-langen Speicher einer Zeitreihe. Da die erste for-Schleife iterativ ist, kann ich sie nicht vektorisieren. Außerdem ist die Ausgabe der versuchten Vektorisierung etwas von dem unveränderten Rohcode entfernt. Danke für Ihre Hilfe.Vektorisierung der temperierten fraktionalen Differenzrechnung
Rohcode
tempfracdiff= function (x,d,eta) {
n=length(x);x=x-mean(x);PI=numeric(n)
PI[1]=-d;TPI=numeric(n);ydiff=x
for (k in 2:n) {PI[k]=PI[k-1]*(k-1-d)/k}
for (j in 1:n) {TPI[j]=exp(-eta*j)*PI[j]}
for (i in 2:n) {ydiff[i]=x[i]+sum(TPI[1:(i-1)]*x[(i-1):1])}
return(ydiff) }
Versuchte Vektorisierung
tempfracdiffFL=function (x,d,eta) {
n=length(x);x=x-mean(x);PI=numeric(n)
PI[1]=-d;TPI=numeric(n);ydiff=x
for (k in 2:n) {PI[k]=PI[k-1]*(k-1-d)/k}
TPI[1:n]=exp(-eta*1:n)*PI[1:n]
ydiff[2:n]=x[2:n]+sum(TPI[1:(2:n-1)]*x[(2:n-1):1])
return(ydiff) }