summaryrefslogtreecommitdiff
path: root/R/idframe.R
blob: be251847c5729c3810726fe01d768de27405c08d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# class idframe
idframe <- function(output=data.frame(numeric(0)),input=data.frame(numeric(0)),
                     type=c("time","freq")[1],Ts = 1,
                     outputnames = colnames(output),inputnames = colnames(input),
                     t.start=0,t.end=NA, timeUnit = "seconds", 
                     frequencies = NA, freqUnit= "Hz"){
  
  ## Input Validation
  if(!(type %in% c("time","freq"))) # type validation
    stop("Unknown domain type")
  
  if(dim(output)[1]!=dim(input)[1]) # observation validation
    stop("Dimensions don't matach")
  
  # Object Constructor
  dat <- list(output=data.frame(output),input=data.frame(input),type=type,Ts=Ts)
  n <- dim(output)[1]
  p <- dim(output)[2];m <- dim(input)[2]
  
  if(outputnames==NULL)
    outputnames <- sapply(1:p,FUN=function(x){paste("y",as.character(x),sep="")})
  
  if(inputnames==NULL)
    inputnames <- sapply(1:m,FUN=function(x){paste("u",as.character(x),sep="")})
  
  colnames(dat$output) <- outputnames
  colnames(dat$input) <- inputnames
  
  if(type=="freq"){

    if(is.na(frequencies)){
      frequncies <- seq(0,2*pi,length=n)
    }
    
    dat$frequencies <- frequencies
    dat$freqUnit <- freqUnit
    
  } else {
    
    if(is.na(t.end)) {
      t.end <- t.start + Ts*(n-1)
    } else {
      out$Ts <- (t.end-t.start)/(n-1)
    }
    
    out$tStart <- t.start; out$tEnd <- t.end
    out$timeUnit <- timeUnit
  }
      
  class(dat) <- "idframe"
  return(dat)
}

# print method for idframe class
print.idframe <- function(object,...){
  
}

# plot method for idframe object
plot.idframe <- function(object,...){
  
}

# summary method for idframe object
summary.idframe <- function(object,...){
  
}