How to filter rows?
31 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ammy
el 9 de Feb. de 2018
Comentada: Les Beckham
el 22 de Feb. de 2023
I have a matrix like this
1 2 3 4 5 6 7 8
2 3 4 1 2 3 4 5
1 2 3 4 1 1 1 1
1 2 3 5 4 2 2 1
I want to separate those rows having first four entries as 1 2 3 4, as in above case I separate out row 1 and row three.
0 comentarios
Respuesta aceptada
Aletta Wilbrink
el 9 de Feb. de 2018
Editada: Aletta Wilbrink
el 9 de Feb. de 2018
Probably not the most efficient way, but this works
b = a(a(:,1)==1 & a(:,2) == 2 & a(:,3) == 3 & a(:,4) == 4,:)
Where a is the name of your matrix
2 comentarios
Aletta Wilbrink
el 9 de Feb. de 2018
Editada: Aletta Wilbrink
el 9 de Feb. de 2018
Seeing Guillaume's answer, a better way is
b = a(all(a(:,1:4) == [1 2 3 4],2),:)
Más respuestas (1)
Guillaume
el 9 de Feb. de 2018
%R2016b or later:
tokeep = all(A(:, 1:4) == [1 2 3 4], 2)
%earlier versions
tokeep = all(bsxfun(@eq, A(:, 1:4), [1 2 3 4]), 2)
%then
A(tokeep, :)
4 comentarios
Kurt
el 22 de Feb. de 2023
The question is simply "How to filter rows?"
Anyway, I found the answer I needed. To filter rows of cells (not numerics) you can either read your data in as a table or convert your matrix to a table. Then use this one-liner:
output_data = input_data(table2array(input_data(:,col)) == "pattern",:);
where "col" is the column number you are filtering on.
There may be other approaches, but this works for me.
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!