How to count the maximum and minimum range of non-zeros elements?

3 vues (au cours des 30 derniers jours)
Jahanzeb Saqib
Jahanzeb Saqib le 7 Déc 2020
Commenté : Jahanzeb Saqib le 8 Déc 2020
let's suppose we have A of length 50 rows
how we can calculate the maximum range of non-zeros element and as well as minimum
A = [0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 ]
In this case Max and Min should be,
Max = 5
Min = 2
Is there a straightforward solution to do this? without using complex looping because in my case data is too large approximately length of A is 220079705, your kind consideration will be highly regarded by all means,
Many Thanks
  2 commentaires
hangar011
hangar011 le 7 Déc 2020
There are built-in functions for this...
length(find(A)) or length(find(A==0))
Image Analyst
Image Analyst le 7 Déc 2020
Sorry, but length(find()) won't work. See my answer below.

Connectez-vous pour commenter.

Réponse acceptée

Image Analyst
Image Analyst le 7 Déc 2020
Use regionprops(), in the Image Processing Toolbox:
A = [0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 ]
props = regionprops(logical(A), 'Area');
allLengths = [props.Area];
minLength = min(allLengths)
maxLength = max(allLengths)
  1 commentaire
Jahanzeb Saqib
Jahanzeb Saqib le 8 Déc 2020
Thank you so much!
The code is working as expected and to the point!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by