summaryrefslogtreecommitdiff
path: root/R
diff options
context:
space:
mode:
authorSuraj Yerramilli2015-06-07 23:32:57 +0530
committerSuraj Yerramilli2015-06-07 23:32:57 +0530
commit187aa8ef794638fd840c02a76e294485c5c85f2e (patch)
tree6609b5a988ae5552ecda9edb53da9a6397cbf75e /R
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
Diffstat (limited to 'R')
-rw-r--r--R/sim.R20
1 files changed, 20 insertions, 0 deletions
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