How to resample a signal by a fraction

50 visualizaciones (últimos 30 días)
Saed
Saed el 17 de Mayo de 2013
Comentada: Kir el 25 de Mayo de 2020
Hello,
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?
Thanks

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
Saed el 20 de Mayo de 2013
This seems to work just fine.
Thanks

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
David Barry
David Barry el 20 de Mayo de 2013
I mean having P and Q values of 1 and 1.0010 is the same as having P and Q values of 1000 and 1001.
Kir
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.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by