Finding a row with a certain value and the next nth rows after that
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Me Me
el 18 de Feb. de 2021
Comentada: Me Me
el 21 de Feb. de 2021
Hi
I would like to find a row with a specific value and the next nth rows after that.
0.8147 0.0975 0.1576 0.1419 0.6557
0.9058 0.2785 0.9706 0.4218 0.0357
0.1270 0.5469 0.9572 0.9157 5
0.9134 0.9575 0.4854 0.7922 0.9340
0.6324 0.9649 0.8003 0.9595 0.6787
0.9134 0.9575 0.4854 0.7922 5
0.6324 0.9649 0.8003 0.9595 0.6787
0.6324 0.9649 0.8003 0.9595 0.6787
So in the above example, i would like to find the last column == 5 and then the next two rows and extract those.
I know how to index and find column ==5 , but not how to find the next two rows.
thanks
4 comentarios
dpb
el 18 de Feb. de 2021
Pretty-much...altho you didn't answer the Q? posed of what, precisely is the wanted output?
Your code snippet above doesn't define lastcol nor row so can't tell for sure...if you set
lastcol=size(data,2);
note this would be a place to use the builtin addressing expression end that will return the size in the direction of an array in the direction corresponding to the position in the addressing expression it appears.
Similarly, if
row=[1:lastcol];
or equivalent, then you can write
idx=find(data(:,end)==5);
v=data(idx:idx+2,:);
NB: However, this returns only rows 3:5, not 3:5 and 6:8 which also satisfy the request.
Respuesta aceptada
Matt J
el 18 de Feb. de 2021
Editada: Matt J
el 18 de Feb. de 2021
Here's an approach that uses logical indexing only:
A=[ 0.9058 0.2785 0.9706 0.4218 0.0357
0.1270 0.5469 0.9572 0.9157 5
0.9134 0.9575 0.4854 0.7922 0.9340
0.6324 0.9649 0.8003 0.9595 0.6787
0 1 2 3 0.4
0 1 2 3 0.4
0.9134 0.9575 0.4854 0.7922 5
0.6324 0.9649 0.8003 0.9595 0.6787
0.6324 0.9649 0.8003 0.9595 0.6787
0 1 2 3 0.4];
idx = movmax(A(:,end)==5,[2,0]);
A(idx,:)
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrix Indexing 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!