summaryrefslogtreecommitdiff
path: root/R/rarx.R
diff options
context:
space:
mode:
authorSuraj Yerramilli2016-05-22 12:47:08 +0530
committerSuraj Yerramilli2016-05-22 12:47:08 +0530
commit1418dac14c87ee4d4700628fce2921eccc473717 (patch)
tree21400f2bfafef83692fcd32c51525a849094ecd4 /R/rarx.R
parent8d2cd6167d230359a0bcb069cb7973d6e3a63adf (diff)
downloadSysID-R-code-1418dac14c87ee4d4700628fce2921eccc473717.tar.gz
SysID-R-code-1418dac14c87ee4d4700628fce2921eccc473717.tar.bz2
SysID-R-code-1418dac14c87ee4d4700628fce2921eccc473717.zip
adding rarx documentation
Diffstat (limited to 'R/rarx.R')
-rw-r--r--R/rarx.R44
1 files changed, 43 insertions, 1 deletions
diff --git a/R/rarx.R b/R/rarx.R
index 92f9333..89a4d8e 100644
--- a/R/rarx.R
+++ b/R/rarx.R
@@ -1,3 +1,45 @@
+#' Estimate parameters of ARX recursively
+#'
+#' Estimates the parameters of a single-output ARX model of the
+#' specified order from data using the recursive weighted least-squares
+#' algorithm.
+#'
+#' @param x an object of class \code{idframe}
+#' @param order Specification of the orders: the three integer components
+#' (na,nb,nk) are the order of polynolnomial A, (order of polynomial B + 1) and
+#' the input-output delay
+#' @param lambda Forgetting factor(Default=\code{0.95})
+#'
+#' @return
+#' A list containing the following objects
+#' \describe{
+#' \item{theta}{Estimated parameters of the model. The \eqn{k^{th}}
+#' row contains the parameters associated with the \eqn{k^{th}}
+#' sample. Each row in \code{theta} has the following format: \cr
+#' theta[i,:]=[a1,a2,...,ana,b1,...bnb]
+#' }
+#' \item{yhat}{Predicted value of the output, according to the
+#' current model - parameters based on all past data}
+#' }
+#'
+#' @references
+#' Arun K. Tangirala (2015), \emph{Principles of System Identification:
+#' Theory and Practice}, CRC Press, Boca Raton. Section 25.1.3
+#'
+#' Lennart Ljung (1999), \emph{System Identification: Theory for the User},
+#' 2nd Edition, Prentice Hall, New York. Section 11.2
+#' @examples
+#' Gp1 <- idpoly(c(1,-0.9,0.2),2,ioDelay=2,noiseVar = 0.1)
+#' Gp2 <- idpoly(c(1,-1.2,0.35),2.5,ioDelay=2,noiseVar = 0.1)
+#' uk = idinput(2044,'prbs',c(0,1/4)); N = length(uk);
+#' N1 = round(0.35*N); N2 = round(0.4*N); N3 = N-N1-N2;
+#' yk1 <- sim(Gp1,uk[1:N1],addNoise = T)
+#' yk2 <- sim(Gp2,uk[N1+1:N2],addNoise = T)
+#' yk3 <- sim(Gp1,uk[N1+N2+1:N3],addNoise = T)
+#' yk <- c(yk1,yk2,yk3)
+#' z <- idframe(yk,uk,1)
+#' g(theta,yhat) %=% rarx(z,c(2,1,2))
+#'
#' @export
rarx <- function(x,order=c(1,1,1),lambda=0.95){
y <- outputData(x); u <- inputData(x)
@@ -33,5 +75,5 @@ rarx <- function(x,order=c(1,1,1),lambda=0.95){
theta[i+1,] <- t(t(theta[i,,drop=F])+eps_i[1]*kappa_i)
Plast <- (diag(na+nb)-kappa_i%*%t(temp))%*%Plast/lambda
}
- list(theta=theta,yhat=yhat,P=Plast)
+ list(theta=theta,yhat=yhat)
} \ No newline at end of file