Clear Filters
Clear Filters

Decimate to a specific number

12 views (last 30 days)
youngz
youngz on 22 Apr 2017
Answered: Walter Roberson on 22 Apr 2017
Hi,
I have a signal and I would like to downsample it at a specific number (e.g. 256). I am thinking to use the function decimate(), anyway, it accepts only the integers as input. So, I cannot downsample my signal to a specific value.
The code:
myArray = 1:980;
target = 256;
[p,q] = rat(256/length(myArray));
y = decimate(myArray,p/q);
My first idea is to interpolate the data in order to reach a multiple of my target sample rate. Anyway, maybe there is a different (and better) solution.
NB: I know that there is the function resample(), anyway I am trying to find new solutions.
Regards

Answers (1)

Walter Roberson
Walter Roberson on 22 Apr 2017
myArray = 1:980;
target = 256;
n_ent = length(myArray);
y = interp1( 1:n_ent, myArray, linspace(1, n_ent, target) );
You cannot use decimate() the way you had hoped to.

Community Treasure Hunt

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

Start Hunting!