How to resample a signal by a fraction

54 visualizaciones (últimos 30 días)
Saed el 17 de Mayo de 2013
Comentada: Kir el 25 de Mayo de 2020
I have the time-domain received signal v(t) and I want to re-sample it at as v(t/(1+a)), where a is not an integer and it is in the order of ~10^-3. How can I do that in MATLAB, since the resample function requires that both P and Q be integer?

Respuesta aceptada

Matt Kindig
Matt Kindig el 19 de Mayo de 2013
Editada: Matt Kindig el 19 de Mayo de 2013
You could use interpolation instead. Something like this:
vnew = interp1( t, v, t/(1+a), 'linear');
You could use other interpolation approaches ('spline','cubic', etc.) as well, as appropriate.
  1 comentario
Saed el 20 de Mayo de 2013
This seems to work just fine.

Iniciar sesión para comentar.

Más respuestas (2)

David Barry
David Barry el 17 de Mayo de 2013
I suggest you reciprocate your a variable and round it to the nearest integer. You then just need to make sure you get the arguments the correct way in the resample function.
y = resample(x,p,q) resamples the sequence in vector x at p/q times the original sampling rate
  5 comentarios
Kir el 25 de Mayo de 2020
P and Q are integers

Iniciar sesión para comentar.

Malcolm Lidierth
Malcolm Lidierth el 19 de Mayo de 2013
Is this any help?
% SincResample returns the data convolved with a set of time-shifted windowed sinc functions, one for each of the samples [1..size(x,1)] in the input signal.


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by