How to resample a signal by a fraction
Show older comments
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
Accepted Answer
More Answers (2)
David Barry
on 17 May 2013
1 vote
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 Comments
David Barry
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
on 19 May 2013
David Barry
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.
Kir
on 25 May 2020
P and Q are integers
Malcolm Lidierth
on 19 May 2013
0 votes
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.
Categories
Find more on Multirate Signal Processing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!