Hi Michael, There are many issues with stats::convolve() that hopefully one day will be addressed. Full story here:
https://stat.ethz.ch/pipermail/r-devel/2007-February/044529.html The user shouldn't have to worry about the lengths of the arguments: convolve() should take care of doing the zero-padding internally so it's always fast. That's what the proposed convolve2() does (in addition to addressing a few other issues). Cheers, H. On 06/23/2013 09:29 AM, Michael Moers wrote:
Hi, the function stats::convolve does not mention efficient usage of the underlying FFT algorithm, such as (a) if type="circular", then length(x)=length(y) should have many factors (e.g. length(x) = length(y) = 2^n) (b) if type="open" or "filter", then length(x)+length(y)-1 should have many factors (e.g. length(x)+length(y)-1 = 2^n) In particular the latter may not be obvious to first time users, who may think that stats::convolve is slow, even though it is fast, if applied correctly. Moreover for zero padding, one may apply stats::nextn to (a) length(x) or (b) length(x)+length(y)-1. #Example: #correct usage: x <- rnorm(514289) y <- rnorm(10000) #length(x) + length(y) - 1 = 2^19 system.time(convolve(x, y, type="open")) # user system elapsed # 1.17 0.02 1.18 #incorrect usage: x <- rnorm(300000) y <- rnorm(10000) system.time(convolve(x, y, type = "open")) # user system elapsed # 685.31 0.09 691.79 Thanks and Kind regards, Michael Moers [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
-- Hervé Pagès Program in Computational Biology Division of Public Health Sciences Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N, M1-B514 P.O. Box 19024 Seattle, WA 98109-1024 E-mail: hpa...@fhcrc.org Phone: (206) 667-5791 Fax: (206) 667-1319 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel