How to decimate the matrix
51 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
kubyk
am 13 Jun. 2014
Bearbeitet: Matthew
am 6 Mär. 2015
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 Kommentare
Akzeptierte Antwort
Image Analyst
am 13 Jun. 2014
How about
outputMatrix = data(1:10:end, :);
4 Kommentare
Matthew
am 6 Mär. 2015
Bearbeitet: Matthew
am 6 Mär. 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
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Multirate Signal Processing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!