How to calculate the average without taking zeros values?
Mostrar comentarios más antiguos
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
Respuesta aceptada
Más respuestas (3)
Jos (10584)
el 13 de Dic. de 2013
Editada: Jos (10584)
el 13 de Dic. de 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 comentarios
afrya
el 13 de Dic. de 2013
David Du
el 28 de Nov. de 2015
Very smart idea
Alvaro Espinoza Hernández
el 13 de Ag. de 2018
Excellent!!!! Thanks
Mech Princess
el 5 de Mzo. de 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
Categorías
Más información sobre Mathematics en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!