Mean of every row in a double matrix without looping
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Is it possible to find mean and std dev. of every row in a huge matrix with double data and a lot of NaN interspersed without looping through every row ?
A = [1 2 NaN; 4 NaN 6 ; 8 9 10]
output = 1.5
         5
         9
0 comentarios
Respuesta aceptada
  Matt J
      
      
 el 28 de Dic. de 2012
        
      Editada: Matt J
      
      
 el 29 de Dic. de 2012
  
      If you have the Statistics toolbox, you can use nanmean(A,2) and nanstd(A,2).
If you don't have the toolbox, you can still avoid looping by doing
 B=A;
 map=~isnan(A);
 B(~map)=0;
 N=sum(map,2);
 rowmeans = sum(B,2)./N;
 rowstds = sqrt( sum(B.^2,2)./N -rowmeans.^2 );
If A is of type sparse, however, the above may need to be modified for efficiency's sake.
Más respuestas (0)
Ver también
Categorías
				Más información sobre Creating and Concatenating Matrices 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!

