How to calculate the average without taking zeros values?
Ältere Kommentare anzeigen
Hi, I have a large data list which has this form:
Y=
1 2 4 5 6 7 0 0 0 8 9 0 0 0 0... AVerage1=5.25
2 3 4 5 6 7 0 0 0 8 0 0 0 9 0... Average2=5.5
3 4 5 6 7 8 9 0 0 0 0 0 0 0 0... Average3=6
.
.
.
I would like to calculate the average of each row wihout taking zeros values.
Thanks in advance
Akzeptierte Antwort
Weitere Antworten (3)
Jos (10584)
am 13 Dez. 2013
Bearbeitet: Jos (10584)
am 13 Dez. 2013
No need of a loop:
A = [1 2 3 ; 10 0 30 ; 9 0 0]
rowMean = sum(A,2) ./ sum(A~=0,2)
Note that zeros do not contribute to sum(A) …
4 Kommentare
afrya
am 13 Dez. 2013
David Du
am 28 Nov. 2015
Very smart idea
Alvaro Espinoza Hernández
am 13 Aug. 2018
Excellent!!!! Thanks
Mech Princess
am 5 Mär. 2019
mean(nonzeros(X))
Y=[1 2 4 5 6 7 0 0 0 8 9 0 0 0 0; ...
2 3 4 5 6 7 0 0 0 8 0 0 0 9 0;...
3 4 5 6 7 8 9 0 0 0 0 0 0 0 0];
for i=1:3
mean(nonzeros(Y(i,:)))
end
Kategorien
Mehr zu Mathematics finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!