[SciPy-User] Usage of scipy.signal.resample

Neal Becker ndbecker2 at gmail.com
Wed Aug 26 13:36:21 EDT 2009


Lev Givon wrote:

> Received from Ivo Maljevic on Wed, Aug 26, 2009 at 10:11:29AM EDT:
> 
>> 2009/8/26 <markus.proeller at ifm.com>
>> 
>> >
>> > Hello,
>> >
>> > I have a question concerning the resample function of scipy.
>> > I have the following code:
>> >
>> > from scipy.signal import resample
>> > >>>x = array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>> > >>>resample(x,5)
>> > array([ 2.5       ,  1.26393202,  4.5       ,  5.5       , 
>> > 8.73606798])
>> >
>> > I don't understand the first value of 2.5.
>> > My scipy version is 0.7.0
>> >
>> > Thanks for help,
>> >
>> > Markus
>>
>> Unless you have a periodic function, I wouldn't rely much on the resample
>> function. It uses FFT approach, and the basic assumption is that x is
>> periodic. Without even trying to go into details, my first guess is that
>> what you see is the consequence
>> of aliasing.
>> 
>> A function that uses polyphase filter would do a better job, but it
>> hasn't been written yet :(
>> Until that is done, maybe you want to experiment by appending zeros to x,
>> resampling, and then discarding the last half:
>> 
>> >>> x=linspace(0,9,10)
>> >>> xx=r_[x, zeros(10)]
>> >>> yy=resample(xx,10)
>> >>> yy
>> array([ 0.16423509,  1.89281122,  4.1904564 ,  5.66068461,  8.68487231,
>>         2.33576491, -0.6288792 ,  0.3095436 , -0.16068461,  0.05119566])
>> 
>> 
>> >>> y=yy[0:5]
>> >>> y
>> array([ 0.16423509,  1.89281122,  4.1904564 ,  5.66068461,  8.68487231])
>> 
>> This is by no means a perfect solution, but I'm just throwing some ideas,
>> and you can try and see if that is good enough for you.
>> 
>> Ivo
> 
> You may also wish to check out the samplerate scikit by David
> Cournapeau; it provides a Python interface to an eponymous library
> that provides a more robust sample rate conversion facility than the
> fft-based function provided by scipy.
> 
> http://pypi.python.org/pypi/scikits.samplerate
> 
> L.G.

Thanks for pointing to this.  I am quite interested in this subject.  I 
grabbed the samplerate source - it seems to be a wrapper on libsamplerate.  
I am quite interested in the reference http://www-isl.stanford.edu/~boyd/.

AFAICT, libsamplerate refers to the above article, but IIUC it doesn't 
actually use this technique at all.  Am I missing something?  (I'd like to 
try to get the software that was used for SOCP - I've been trying to find 
software for optimization of complex-value FIR filters)




More information about the SciPy-User mailing list