Я использую другой генератор поездов с шипами, основанный на модели Пуассона.
arrival_time_v3 <- function(firing_rate,tMax,sampling_rate){
lambda <- firing_rate/sampling_rate
## find the number 'n' of exponential r.vs required by imposing that
## Pr{N(t) <= n} <= 1 - eps for a small 'eps'
n <- qpois(1 - 1e-8, lambda = lambda * tMax)
## simulate exponential interarrivals the
X <- rexp(n = 2*n, rate = lambda)
S <- c(0, cumsum(X))
arr_time <- S[which(S <= tMax)]
arr_time <- as.integer(arr_time)
arr_time <- arr_time[which(arr_time!=0)]
arr_time <- unique(arr_time)
return(arr_time)
}
num_of_spike_trains <- 10
firing_rate_arr <- matrix(c(10,20,30,40,50,60,70,80,90,100),1,num_of_spike_trains)
sampling_rate <- 10000
durartion_sample <- sampling_rate*10 ##10 sec
spike_arrival_time_mat_list <- list()
for(i in seq(1,num_of_spike_trains,1)){
spike_arrival_time_mat_list[[i]] <- t(as.matrix(arrival_time_v3(firing_rate_arr[i],durartion_sample,sampling_rate)))
}
После генерации 10 поездов с шипами (событийных поездов) мы можем использовать пакет barcode
в R:
#install.packages("barcode")
library(barcode)
barcode(spike_ariv_time_mat_list,xlab="Time",main="Spike Trains")