- Can there be more than 1 zeros between non-zero elements?
- Are there always the same number of blocks of non-zero elements per row?
- What does "apply some conditions" mean?
- What should the output look like? Same size as A? What about the zeros in A?
How to find elements between zeros in matrix?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hajem Daham
le 20 Déc 2017
Commenté : Hajem Daham
le 21 Déc 2017
Hello, I have this matrix 3x3:
A = [3,4,6,0,2,7,10,5,0,1,0,8,9,0;
0,5,2,0,1,8,9,0,4,6,10,7,0,3;
1,0,7,2,0,4,10,8,0,3,5,0,6,9]
I want to find(specify) elements between zeros for each row, so I can apply some conditions on these elements between zeros. How can I do it with loops and also for large size matrices.
1 commentaire
Jos (10584)
le 20 Déc 2017
Réponse acceptée
Image Analyst
le 20 Déc 2017
Try this:
A = [3,4,6,0,2,7,10,5,0,1,0,8,9,0; 0,5,2,0,1,8,9,0,4,6,10,7,0,3; 1,0,7,2,0,4,10,8,0,3,5,0,6,9]
[rows, columns] = size(A);
for row = 1 : rows
% Extract just this one row from A.
thisRow = A(row, :);
% Get each group of non-zeros in this row.
props = regionprops(thisRow~=0, thisRow, 'PixelValues');
numGroups = length(props); % Get how many groups of non-zeros there are.
% Examine each group for meeting "constraints"
for g = 1 : numGroups
thisGroup = props(g).PixelValues
% Now do something with this group.
% Check constraints or whatever you want to do.
end
end
Plus de réponses (2)
Matt J
le 20 Déc 2017
Do not use find(). There is no reason you need actual coordinates for what you describe, and it is just extra computation. Use logical indexing instead:
map=(A~=0);
for i=1:size(A,1)
A(i,map(i,:))=....
end
3 commentaires
Matt J
le 20 Déc 2017
Hi Matt, it works, but what I want is to reach non-zeros elements without removing zeros, because the final result should contain zeros also.
Shouldn't matter...
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices 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!