For elements in two arrays/columns of numbers, how can I find the average only if both elements are non-zero?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have many external files. Each file contains two long columns of numbers, like this:
1 2
11 12
6 48
9 0.0
3 0.5
I can read each file in. Now I want to calculate the average of each row. In the column of results, for example, the elements would be:
(1 + 2 / 2)
(11 + 12 / 2)
(6 + 48 / 2) ...
The problem is, I don't want to take the average of rows where one element is zero. For example, I want the row that has
9 0.0
to be "9." Does anyone know how I can do, "calculate the average of each row, but leave the row alone if one element is zero?" I'm using 2016a. Thank you for any advice.
0 commentaires
Réponse acceptée
madhan ravi
le 21 Juil 2020
matrix(matrix == 0) = nan
nanmean(matrix, 2)
5 commentaires
madhan ravi
le 21 Juil 2020
cellfun(@(x) mean(x((x ~= 0) & (~isnan(x)))), num2cell(matrix, 2))
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Multidimensional Arrays 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!