For elements in two arrays/columns of numbers, how can I find the average only if both elements are non-zero?
    2 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Srh Fwl
 el 21 de Jul. de 2020
  
    
    
    
    
    Comentada: Srh Fwl
 el 21 de Jul. de 2020
            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 comentarios
Respuesta aceptada
  madhan ravi
      
      
 el 21 de Jul. de 2020
        matrix(matrix == 0) = nan
nanmean(matrix, 2)
5 comentarios
  madhan ravi
      
      
 el 21 de Jul. de 2020
				 cellfun(@(x) mean(x((x ~= 0) & (~isnan(x)))), num2cell(matrix, 2))
Más respuestas (0)
Ver también
Categorías
				Más información sobre Multidimensional Arrays en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

