How to find out zeros and their indices in a matrix?

2 visualizaciones (últimos 30 días)
SM
SM el 21 de Jul. de 2020
Comentada: SM el 21 de Jul. de 2020
I have an input matrix of size 3*13 double:
input=[0 0 1 0 0 0 1 1 1 0 0 0 0;
0 1 0 0 1 1 0 0 0 1 0 1 0;
0 1 1 1 1 0 0 0 1 0 0 1 0];
I want to know how many zeros subsequently have in
input(2,:)
The output should be:
output=[1 2 3 1 1];
I also want to know their starting index of zeros. It should look like:
index=[1 3 7 11 13];
How can i solve this problem?

Respuesta aceptada

Bruno Luong
Bruno Luong el 21 de Jul. de 2020
Editada: Bruno Luong el 21 de Jul. de 2020
v=input(2,:)>0; % remove >0 if your matrix contains only 0 or 1
d = diff([1, v, 1]);
index = find(d==-1)
output = find(d==1)-index

Más respuestas (1)

Matt J
Matt J el 21 de Jul. de 2020
Editada: Matt J el 21 de Jul. de 2020
One way is to use this FEX submission,
H=group1s(~input(2,:));
output=histcounts(H); output(1)=[];
[~,index]=unique(H); index(1)=[];

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by