How to decimate the matrix
    42 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
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 commentaires
Réponse acceptée
  Image Analyst
      
      
 le 13 Juin 2014
        How about
outputMatrix = data(1:10:end, :);
4 commentaires
  Matthew
 le 6 Mar 2015
				
      Modifié(e) : Matthew
 le 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
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Multirate Signal Processing dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


