Counting values above a threshold within a matrix.
26 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello,
Im looking at finding a way of counting values that are >0 from a matrix, for example:-
if true %if statement used to display matrix correctly
00100
01110
11111
01110
00100
end
Would provide the output 1,3,5,3,1. Any help would light up my day.
Cheers
Gareth
1 commentaire
Azzi Abdelmalek
le 17 Sep 2012
Modifié(e) : Azzi Abdelmalek
le 17 Sep 2012
is this your matrix?
0 0 2 0 0
0 3 4 5 0
1 2 3 4 5
0 6 5 4 0
0 0 3 0 0
Réponse acceptée
Greg
le 17 Sep 2012
sum(myMat>0, 2)
the result is the number of values in each row > 0.
3 commentaires
Plus de réponses (2)
Babak
le 17 Sep 2012
you can run the below function for each of your numbers:
function num_of_1s = no1(n)
if n==0
num_of_1s = 0;
else
length = floor(log10(n))+1;
num_of_1s = 0;
for j=length:-1:1
if floor(log10(n)) == j-1
num_of_1s = num_of_1s +1;
n = n-10^(j-1);
end
end
end
end
Then say for example:
no1(1010111)
which returns
5
nah
le 17 Sep 2012
A simple way is:
myMat =
0 0 2 0 0
0 3 4 5 0
1 2 3 4 5
0 6 5 4 0
0 0 3 0 0
[nrows,ncols] = size(myMat);
counts_above_0 = zeros(nrows,1);
for rx = 1:nrows
counts_above_0(rx,1) = length(find(myMat(rx,:)>0));
end
Voir également
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!