diff options
Diffstat (limited to 'R/prbs.R')
-rw-r--r-- | R/prbs.R | 70 |
1 files changed, 0 insertions, 70 deletions
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 |