How to resample a signal by a fraction

조회 수: 64(최근 30일)
Saed 2013년 5월 17일
댓글: Kir 2020년 5월 25일
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?

채택된 답변

Matt Kindig
Matt Kindig 2013년 5월 19일
편집: Matt Kindig 2013년 5월 19일
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
Saed 2013년 5월 20일
This seems to work just fine.

댓글을 달려면 로그인하십시오.

추가 답변(2개)

David Barry
David Barry 2013년 5월 17일
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
Kir 2020년 5월 25일
P and Q are integers

댓글을 달려면 로그인하십시오.

Malcolm Lidierth
Malcolm Lidierth 2013년 5월 19일
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