R中递归的非线性滤波器

时间:2015-02-18 05:54:38

标签: r

我想对R中的向量应用非线性滤波器,如下所示

x<-c(1,2,3,4,5)
a<- .5
b<- .5

这样

>y1 <- x[1]
>y2 <- x[2]+(a*y1)^b
>y3 <- x[3]+(a*y2)^b
>y4 <- x[4]+(a*y3)^b
>y5 <- x[5]+(a*y4)^b

将产生以下向量

y<-c(y1,y2,y3,y4,y5)

当x的长度非常大时,如何以最有效的方式实现这一目标

1 个答案:

答案 0 :(得分:1)

我认为for循环可能与其他任何东西一样有效:

 y1<- numeric(length(x)); y1[1]=1
 for (n in 2:length(x) ) { y1[n] <- (a*y1[n-1]) ^b + x[n] }

当我替换过滤器的原始定义,然后注意到指数是分数时,我认为简化超出了我的范围:

> y1 <- x[1]
> y2 <- x[2]+(a*x[1])^b
> y3 <- x[3]+(a*x[2]+(a*x[1])^b)^b
> y4 <- x[4]+(a*x[3]+(a*x[2]+(a*x[1])^b)^b)^b
> y5 <- x[5]+(a*x[4]+(a*x[3]+(a*x[2]+(a*x[1])^b)^b)^b)^b
相关问题