Full_Name: Bill Simpson Version: 65.1 , 0.90.1 OS: Linux Submission from: (NULL) (193.62.250.209) I reported this on r-help, but here is official bug report. The present convolve() does not do convolution by default. Its default behaviour is correlation. This is a bug. The default argument conj should be set to FALSE. The zero-padding should be on the right for linear convolution (don't ask me why you call this type="open"; I suggest type="linear"). Here is what I expect linear convolution to do: myconvolve<-function (x,h) { nx <- length(x) nh <- length(h) #zero pad if(nx>nh) { x <- c(x,rep(0, nh-1)) h<-c(h,rep(0,nx-1)) } else { h <- c(h,rep(0, nx-1)) x<-c(x,rep(0,nh-1)) } x <- fft(fft(x) * fft(h), inv = TRUE) Re(x)/length(x) #I am not sure about this, the R IFFT is weird } What "circular" convolution should do is just eliminate the zero-padding: myconvolve2<-function (x,h) { #no padding, circular convolution nx <- length(x) nh <- length(h) x <- fft(fft(x) * fft(h), inv = TRUE) Re(x)/(nx) } I suggest that you create two functions, convolve() and correlate(), and get rid of the conj argument in convolve(). -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._