フィルターのクリア

Taking Average of Nonzero Elements

1 回表示 (過去 30 日間)
Imam
Imam 2014 年 10 月 17 日
コメント済み: Imam 2014 年 10 月 17 日
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.

採用された回答

Matt J
Matt J 2014 年 10 月 17 日
編集済み: Matt J 2014 年 10 月 17 日
L=(A>6 & A<11);
means=sum(B.*L,2)./sum(L,2);
means=means(~isnan(means))
  1 件のコメント
Imam
Imam 2014 年 10 月 17 日
Allright, it does help. Thanks a lot Matt.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDevelop Apps Using App Designer についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by