Data filtering(Cut from half length of index until next index )

4 vues (au cours des 30 derniers jours)
Jaehwi Bong
Jaehwi Bong le 14 Août 2019
Modifié(e) : Jaehwi Bong le 14 Août 2019
I have this kind of data. First column and seconds column refer to an index and x value relatively.
data = [1 200; 1 201; 1 202; 1 201; 2 301; 2 313; 2 311; 3 401; 3 452; 3 433; 3 405; 4 504; 4 303; 4 604; 4 703; 5 600; 5 700; 5 606; 5 703; 5 905; 5 444;];
For example, I want to get rid of half rows of each index.
I'd like to have this kind of data that has half length (or tird whatever ratio) of index.
data = [1 200; 1 201; 2 301; 2 313; 3 401; 3 452; 4 604 4 703; 5 600; 5 700; 5 606;];
for i = max(data(:,1));
TF = sum(data(:,1)==i)+sum(data(:,1)==i-1);
%TF2 = sum(data(:,1)==i-1);
data(TF./2+1:TF,:) = [];
end %My code doesn't work at all:(
If anyone can help, it would be greatly appreciated.
Thank you!

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 14 Août 2019
data2 = data(cell2mat(accumarray(data(:,1),...
(1:size(data,1))',[],@(x){x(1:ceil(numel(x)/2))})),:);
  1 commentaire
Jaehwi Bong
Jaehwi Bong le 14 Août 2019
Modifié(e) : Jaehwi Bong le 14 Août 2019
Thank you for your answer!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing 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!

Translated by