summaryrefslogtreecommitdiff
path: root/R
diff options
context:
space:
mode:
Diffstat (limited to 'R')
-rw-r--r--R/idinput.R63
-rw-r--r--R/prbs.R70
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