Taking Average of Nonzero Elements

6 vues (au cours des 30 derniers jours)
Imam
Imam le 17 Oct 2014
Commenté : Imam le 17 Oct 2014
Hi everyone,
I have got 2 questions, I hope someone can help me.
The first one is, I have a matrix A where
A = 1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Then I apply the following
A = A>6 & A<11
[r,c,v] = find(A)
Doing that in the end I will have the information of indices that belong to those elements fulfilling the condition A>5 & A<12 in vectors r and c. Now I have another matrix B of the same dimensions as A.
B = 54 32 13 5
1 10 45 24
4 44 2 15
66 26 17 89
I want to choose only elements of B having the same indices as the elements in A that fulfilled the previous condition, leaving the other elements as zero. But if a row of B doesn't have such element matching what was mentioned above then it's truncated. So in the end I will have
result = 0 0 45 24
4 44 0 0
My last problem is simply how to take the average value on each element of matrix 'result' ignoring zeros, so what I will get is
mean = 34.5
24
I will really appreciate any help. Thanks in advance.

Réponse acceptée

Matt J
Matt J le 17 Oct 2014
Modifié(e) : Matt J le 17 Oct 2014
L=(A>6 & A<11);
means=sum(B.*L,2)./sum(L,2);
means=means(~isnan(means))
  1 commentaire
Imam
Imam le 17 Oct 2014
Allright, it does help. Thanks a lot Matt.

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