diff options
Diffstat (limited to 'R')
-rw-r--r-- | R/idinput.R | 63 | ||||
-rw-r--r-- | R/prbs.R | 70 |
2 files changed, 29 insertions, 104 deletions
diff --git a/R/idinput.R b/R/idinput.R index 330ac93..46b8cad 100644 --- a/R/idinput.R +++ b/R/idinput.R @@ -47,6 +47,32 @@ rbs <- function(n,band,levels){ sapply(u,function(x) if(x>0) levels[2] else levels[1]) } +butter_filt <- function(x,band){ + filt <- T; type <- "pass" + if(band[1]<=2e-3){ + if(band[2]==1){ + filt <- F + } else{ + type <- "low" + } + } else{ + if(band[2]==1){ + type <- "high" + } + } + if(filt==T){ + if(type=="low"){ + bf <- signal::butter(8,band[2],type,"z") + } else if(type=="pass"){ + bf <- signal::butter(8,band,type,"z") + }else{ + bf <- signal::butter(8,band[1],type,"z") + } + x <- as.numeric(signal::filter(bf,x)) + } + return(matrix(x,ncol=1)) +} + multisine <- function(N,nin=1,band,levels){ sinedata <- list(nSin=10,nTrial=10,gridSkip=1) freq <- 2*pi*seq(1,floor(N/2),by=sinedata$gridSkip)/N @@ -73,15 +99,12 @@ multisine <- function(N,nin=1,band,levels){ return(u) } -#' @export -library(bitops) -require(signal) - +#' @import bitops signal idin.prbs<-function(n,band=c(0,1),levels=c(0,1)){ - u=vector() + u <- numeric(0) for(i in 1:18){ if(n / (2^i) < 1){ - u=idin.prbs12(i,band,levels) + u <- idin.prbs12(i,band,levels) break } } @@ -130,32 +153,4 @@ idin.prbs12 <- function(N,band=c(0,1),levels=c(0,1)){ v=sapply(v, function(x){if (x==0) levels[1] else levels[2]}) return(v) -} - - - -butter_filt <- function(x,band){ - filt <- T; type <- "pass" - if(band[1]<=2e-3){ - if(band[2]==1){ - filt <- F - } else{ - type <- "low" - } - } else{ - if(band[2]==1){ - type <- "high" - } - } - if(filt==T){ - if(type=="low"){ - bf <- signal::butter(8,band[2],type,"z") - } else if(type=="pass"){ - bf <- signal::butter(8,band,type,"z") - }else{ - bf <- signal::butter(8,band[1],type,"z") - } - x <- as.numeric(signal::filter(bf,x)) - } - return(matrix(x,ncol=1)) }
\ No newline at end of file diff --git a/R/prbs.R b/R/prbs.R deleted file mode 100644 index 0380625..0000000 --- a/R/prbs.R +++ /dev/null @@ -1,70 +0,0 @@ -#' @export - library(bitops) -require(signal) - -idin.prbs<-function(n,band=c(0,1),levels=c(0,1)){ - u=vector() - for(i in 1:18){ - if(n / (2^i) < 1){ - u=idin.prbs12(i,band,levels) - break - } - } - return(u[1:n]) -} - -idin.prbs12 <- function(N,band=c(0,1),levels=c(0,1)){ - first=ceiling(abs(rnorm(1)*10)) #some non-zero initial state - x= first - v = vector() - n=2^N-1 - i=1 - clock=floor(1/band[2]) - k=1 - M=rbind(c(0,0,0,0),c(1,2,0,0),c(1,3,0,0),c(1,4,0,0),c(2,5,0,0),c(1,6,0,0), - c(1,7,0,0),c(1,2,7,8),c(4,9,0,0),c(3,10,0,0),c(9,11,0,0), - c(6,8,11,12),c(9,10,12,13),c(4,8,13,14),c(14,15,0,0),c(4,13,15,16), - c(14,17,0,0),c(11,18,0,0)) - repeat{ - a=M[N,1] - b=M[N,2] - c=M[N,3] - d=M[N,4] - four=c(8,12,13,14,16) - if(N %in% four){ - e=bitwXor(bitwShiftR(x,N-a),bitwShiftR(x,N-b)) - f=bitwXor(bitwShiftR(x,N-c),bitwShiftR(x,N-d)) - newbit=bitwAnd(bitwXor(e,f),1) - }else{ - newbit=bitwAnd(bitwXor(bitwShiftR(x,N-a),bitwShiftR(x,N-b)),1) - } - if(k>=clock || i==1){ - # newbit=bitwAnd(bitwXor(bitwShiftR(x,0),bitwShiftR(x,1)),1) - v[i]=newbit - i=i+1 - # x=bitwOr(bitwShiftR(x,1),bitwShiftL(newbit,6)) - k=1 - }else{ - - v[i]=v[i-1] - i=i+1 - k=k+1 - } - - x=bitwOr(bitwShiftR(x,1),bitwShiftL(newbit,N-1)) - - #checking if it exceeds the repetition period or reaches - #required no. of bits first - if(x==first){ - cat("Repetition period is ",i-1) - break - } - # else if(i-1==n){ - # break - # } - - } - - v=sapply(v, function(x){if (x==0) levels[1] else levels[2]}) - return(v) -}
\ No newline at end of file |