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

2 vues (au cours des 30 derniers jours)
SM
SM le 21 Juil 2020
Commenté : SM le 21 Juil 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?

Réponse acceptée

Bruno Luong
Bruno Luong le 21 Juil 2020
Modifié(e) : Bruno Luong le 21 Juil 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

Plus de réponses (1)

Matt J
Matt J le 21 Juil 2020
Modifié(e) : Matt J le 21 Juil 2020
One way is to use this FEX submission,
H=group1s(~input(2,:));
output=histcounts(H); output(1)=[];
[~,index]=unique(H); index(1)=[];

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by