[R] downsampling

Warren Young warren at etr-usa.com
Fri Jul 24 11:16:58 CEST 2009


Michael Knudsen wrote:
> On Fri, Jul 24, 2009 at 9:32 AM, Jan Wiener<jan.wiener at tuebingen.mpg.de> wrote:
> 
>> x=sample(1:5, 115, replace=TRUE)
>> 
>> How do I downsample this vector to 100 entries? Are there any R
>> functions or packages that provide such functionality.
> 
> What exactly do you mean by downsampling? 

It means that the original 115 points should be treated as a continuous 
function of x, or t, or whatever the horizontal axis is, with new values 
coming from this function at 100 evenly-spaced points along this function.

This procedure is how a sound editing program can produce a 
good-sounding 44.1 kHz CD quality file from material recorded at 48 kHz, 
for instance.  Something similar happens when you ask your photo editing 
program to give you a smaller version of, say, a 12 Mpix picture for 
emailing or putting up on the web.  These are all forms of interpolation.

There's a degenerate case, where the number of output samples divides 
evenly into the number of input samples.  For instance, to downsample a 
96 kHz audio file to 48 kHz, just throw away every other sample.

I, too, wish I know how to do the harder interpolation case in R.  I've 
been in the OP's shoes, fighting with zoo and failing.  The last time I 
had to do this, I gave up on R and did it in Mathematica.  I also 
remember that it was easy to do this in Igor Pro when I played with its 
demo version.




More information about the R-help mailing list