Dear list, I am trying to choose the scale parameter for the cgt transform but I don't know how to do it. In time I would like to be able to separate points 30 samples apart, and in frequency I would like to separate bands 0.04 Hz apart. I tried the two approaches described below and they gave me different results. I would appreciate advise on how to do this.
The Rwave Gabor transform uses a Gaussian window; i.e., g(x)=exp(-x^2/(2*sigma)), with radius deltaG=sqrt(sigma/2). The Fourier transform of this window has a radius deltaGHat=1/sqrt(2*sigma). Solving for deltaG=10 I get sigma=200, which in turn gives deltaGHat=0.05 radians=0.008 Hz. So, sigma=200 should satisfy the requirements above. To make sure sigma=200 works in practice, I computed the Gabor transform of two sinusoids separated by 0.04 Hz plus two spikes separated by 30 points using the code below. I obtained an excellent frequency resolution but a disastrous temporal resolution http://sccn.ucsd.edu/~rapela/scaleSelectionProblem/gtResultSigma200.jpg. To obtain decent frequency and temporal resolutions I used sigma=10 http://sccn.ucsd.edu/~rapela/scaleSelectionProblem/gtResultSigma10.jpg. fromTime <- 0 toTime <- 250 by <- 1 ts <- seq(from=fromTime, to=toTime) f1 <- 0.01 f2 <- 0.05 t1 <- 50 t2 <- 80 K <- 15 fMax <- 0.20 nf <- 100 df <- fMax/(nf/2) scale <- 10 ys <- sin(2*pi*f1*ts) + sin(2*pi*f2*ts) ys[t1] <- K ys[t2] <- K plot(x=ts, y=ys, xlab="Time", ylab="Signal", type="b") cgtsinwave <- cgt(input=ys, nvoice=nf, freqstep=df, scale=scale, plot=TRUE) Many thanks, Joaquin -- Joaquin Rapela, PhD Swartz Center for Computational Neuroscience University of California San Diego 9500 Gilman Drive, San Diego, CA 92093-0559 tel: (858) 822-7536 fax: (858) 822-7556 http://sccn.ucsd.edu/~rapela ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.