summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuraj Yerramilli2015-06-07 23:32:57 +0530
committerSuraj Yerramilli2015-06-07 23:32:57 +0530
commit187aa8ef794638fd840c02a76e294485c5c85f2e (patch)
tree6609b5a988ae5552ecda9edb53da9a6397cbf75e
parent09f4e59316031f8d9334df3e9d9f635bcf096f57 (diff)
downloadSysID-R-code-187aa8ef794638fd840c02a76e294485c5c85f2e.tar.gz
SysID-R-code-187aa8ef794638fd840c02a76e294485c5c85f2e.tar.bz2
SysID-R-code-187aa8ef794638fd840c02a76e294485c5c85f2e.zip
Added sim routine for univariate idoply models
-rw-r--r--NAMESPACE1
-rw-r--r--R/sim.R20
2 files changed, 21 insertions, 0 deletions
diff --git a/NAMESPACE b/NAMESPACE
index ba90a0a..5b305c1 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -12,6 +12,7 @@ S3method(print,summary.idframe)
S3method(print,tf)
S3method(sim,arx)
S3method(sim,default)
+S3method(sim,idpoly)
S3method(summary,estARX)
S3method(summary,idframe)
export(armax)
diff --git a/R/sim.R b/R/sim.R
index 6f802f3..788f850 100644
--- a/R/sim.R
+++ b/R/sim.R
@@ -47,4 +47,24 @@ sim.arx <- function(model,input,sigma=0){
y[i] <- reg%*%coef + rnorm(1,sd = sigma)
}
return(y[n+1:length(input)])
+}
+
+#' @export
+sim.idpoly <- function(model,input,sigma=1){
+ require(signal)
+
+ n <- length(input)[1]
+ ek <- rnorm(n,sd=sigma)
+ filt1 <- signal::Arma(b=model$C,a=model$D)
+ vk <- filter(filt1,ek)
+
+ B <- c(rep(0,model$ioDelay),model$B)
+ filt2 <- signal::Arma(b=model$B,a=model$F1)
+ ufk <- filter(filt2,input)
+
+ ypfk <- ufk + vk;
+ filt3 <- signal::Arma(b=1,a=model$A)
+ yk <- filter(filt3,ypfk)
+
+ return(as.numeric(yk))
} \ No newline at end of file