summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NAMESPACE6
-rw-r--r--R/poly.R57
2 files changed, 24 insertions, 39 deletions
diff --git a/NAMESPACE b/NAMESPACE
index 932e976..2eefc81 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -18,7 +18,7 @@ S3method(plot,idfrd)
S3method(plot,impulseest)
S3method(predict,detrend)
S3method(predict,estARX)
-S3method(print,arx)
+S3method(print,idpoly)
S3method(print,summary.estARX)
S3method(print,summary.idframe)
S3method(print,tf)
@@ -30,9 +30,6 @@ S3method(summary,idframe)
S3method(time,idframe)
export("inputNames<-")
export("outputNames<-")
-export(armax)
-export(arx)
-export(bj)
export(dataSlice)
export(detrend)
export(estARX)
@@ -48,7 +45,6 @@ export(inputNames)
export(misdata)
export(nInputSeries)
export(nOutputSeries)
-export(oe)
export(outputData)
export(outputNames)
export(read.idframe)
diff --git a/R/poly.R b/R/poly.R
index f7fae2c..0fd50b5 100644
--- a/R/poly.R
+++ b/R/poly.R
@@ -1,19 +1,36 @@
#' @export
idpoly <- function(A=1,B=1,C=1,D=1,F1=1,ioDelay=0,Ts=1){
out <- list(A= A,B=B,C=C,D=D,F1=F1,ioDelay = ioDelay,Ts=Ts)
+ out$type <- typecheck(x)
class(out) <- "idpoly"
return(out)
}
-#' @export
-arx <- function(A,B,ioDelay=0,Ts=1){
- out <- idpoly(A=A,B=B,ioDelay = ioDelay,Ts=1)
- class(out) <- c("arx","idpoly")
- return(out)
+typecheck <- function(x){
+ y <- lapply(x[1:5],checkUnity)
+ if(y$A){
+ out <- if(y$C||y$F1) "oe" else "bj"
+ } else{
+ if(y$D && y$F1){
+ out <- if(y$C) "arx" else "armax"
+ } else{
+ out <- "idpoly"
+ }
+ }
+}
+
+checkUnity <- function(x){
+ out <- if(length(x)==1 && x==1) TRUE else FALSE
}
#' @export
-print.arx <- function(obj){
+print.idpoly <- function(x){
+ if(x$type=="arx"){
+ print_arx(x)
+ }
+}
+
+print_arx <- function(obj){
cat("Discrete-time ARX model: A(q^{-1})y[k] = B(q^{-1})u[k] + e[k] \n\n")
cat("A(q^{-1}) = ")
for(i in seq_along(obj$A)){
@@ -47,31 +64,3 @@ print.arx <- function(obj){
}
}
-#' @export
-armax <- function(A,B,C,ioDelay=0,Ts=1){
- out <- idpoly(A=A,B=B,C=C,ioDelay = ioDelay,Ts=Ts)
- class(out) <- c("armax","idpoly")
- return(out)
-}
-
-#' @export
-oe <- function(B,C,ioDelay=0,Ts=1){
- out <- idpoly(B=B,C=C,ioDelay=ioDelay,Ts=Ts)
- class(out) <- c("oe","idpoly")
- return(out)
-}
-
-#' @export
-oe <- function(B,C,ioDelay=0,Ts=1){
- out <- idpoly(B=B,C=C,ioDelay=ioDelay,Ts=Ts)
- class(out) <- c("oe","idpoly")
- return(out)
-}
-
-#' @export
-bj <- function(B,C,D,F1,ioDelay=0,Ts=1){
- out <- idpoly(B=B,C=C,D=D,F1=F1,ioDelay=ioDelay,Ts=Ts)
- class(out) <- c("oe","idpoly")
- return(out)
-}
-