Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

How to resample a signal by a fraction

Asked by Saed

Saed (view profile)

on 17 May 2013

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

0 Comments

Saed

Saed (view profile)

Tags

Products

No products are associated with this question.

3 Answers

Answer by Matt Kindig

Matt Kindig (view profile)

on 19 May 2013
Edited by Matt Kindig

Matt Kindig (view profile)

on 19 May 2013
Accepted answer

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 Comment

Saed

Saed (view profile)

on 20 May 2013

This seems to work just fine.

Thanks

Matt Kindig

Matt Kindig (view profile)

Answer by David Barry

David Barry (view profile)

on 17 May 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

4 Comments

David Barry

David Barry (view profile)

on 17 May 2013

Apologies, I missed your 1+a bit. In that case you need to change both P and Q in the resample function by multiplying up until you get the accuracy you need.

Example: Suppose I want to re-sample by 1/(1+a) where a was 1e-3.

1+1e-3 = 1.0010 so I might want to scale up by factor of 1000 and use values of 1000 and 1001 for P and Q.

Saed

Saed (view profile)

on 19 May 2013

What do you mean by scale up by 1000? Like

if true
  resample(x,1000*(1+a),1001);
end
?
David Barry

David Barry (view profile)

on 20 May 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.

David Barry

David Barry (view profile)

Answer by Malcolm Lidierth

Malcolm Lidierth (view profile)

on 19 May 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.

http://www.mathworks.co.uk/matlabcentral/fileexchange/12268-sinc-resample

0 Comments

Malcolm Lidierth

Malcolm Lidierth (view profile)

Contact us