In a logical array index the area with the most TRUE values
Afficher commentaires plus anciens
Below I have a logical vector:
t=[0 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 0];
which has 5 TRUE areas and 6 FALSE areas. The 3rd TRUE area has the most TRUE elements of all TRUE areas.
How can I index it logically? To be more specific I want to get the following result:
t=[0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0];
Thank you!
Réponse acceptée
Plus de réponses (1)
Azzi Abdelmalek
le 13 Août 2013
Modifié(e) : Azzi Abdelmalek
le 13 Août 2013
t=[0 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 0];
a=find(diff([0 t 0]));
idx1=a(1:2:end);
idx2=a(2:2:end)-1;
[~,nmax]=max(idx2-idx1);
t=zeros(1,numel(t));
t(idx1(nmax):idx2(nmax))=1
1 commentaire
Giorgos Papakonstantinou
le 18 Août 2013
Catégories
En savoir plus sur Matrix Indexing dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!