How to decimate the matrix
55 views (last 30 days)
Show older comments
Hi, I have matrix of data and I would like to decimate the data with command "decimate(x,r)". The matrix has 100 rows. I tried to get it with FOR loop for decimation each row but still wrong. I just get the first decimated row. Here is my code
data %matrix of data
r=10; %decimation factor
% n=100; %number of rows
for i=1:size(data,1)
x=data(i,:);
y=decimate(x,r);
end
Thanks
0 Comments
Accepted Answer
Image Analyst
on 13 Jun 2014
How about
outputMatrix = data(1:10:end, :);
4 Comments
Matthew
on 6 Mar 2015
Edited: Matthew
on 6 Mar 2015
The decimate function doesn't simply remove data points. It actually low-pass filters the data before downsampling. So decimate(x, r) and x(1:r:end) don't return the same results.
If you actually want to use the decimate function, as far as I can tell you have to use a for loop. I came across this question when I was trying to solve this same problem.
To address the OP's question, in your code, every loop iteration overwrites the value of y. I think the correct way to do it is something like:
y = zeros( size(data,1), ceil(size(data,2)/r) );
for i = 1:size(data,1)
x = data(i, :);
y(i, :) = decimate(x,r); % <<< this was the mistake
end
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!