Delete every n rows if less than x
Afficher commentaires plus anciens
Hi I have a m x 14 matrix. I want to consider the first 24 rows. If the value in coulmn 5 in row 14 is less than x, then delete the first 24 rows. I want to repeat this for the rest of the matrix as well, considering 24 rows at a time
4 commentaires
David du Preez
le 2 Juin 2017
Jan
le 2 Juin 2017
@David: Please give us any useful details. Did you read the "Getting Started" chapters of the documentation already? Did you see Matlab's Onramp tutorials? Is m a multiple of 24? Do you know how to create a FOR loop?
David du Preez
le 2 Juin 2017
Réponse acceptée
Plus de réponses (2)
Andrei Bobrov
le 2 Juin 2017
Let A - your array [m x 14]
ii = ceil((1:m)'/24);
l0 = accumarray(ii,A(:,5) >= x,[],@all);
out = A(l0(ii),:);
Anushi1998
le 2 Juin 2017
Consider going from the end because this won't run your loop infinitely when the portion is not deleted.
Since we have to consider only segments of size 24*14 it won't affect whether we go from top to bottom or bottom to top.
a=%array of size m * 14
for ii=m:-24:24
b=a(ii-23:ii,:);
if(b(14,5)<x)
a(ii-23:ii,:)=[];
end
end
Catégories
En savoir plus sur Programming dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!