Error using 'omitnan'
    7 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Guilherme Lopes de Campos
 el 5 de Jun. de 2019
  
    
    
    
    
    Comentada: Adam Danz
    
      
 el 10 de Jun. de 2019
            Hi MATLAB community,
I wrote a code for identify 999999 to substitute to NaN,  my purpose is replace NaN to mean of column data, 
I tried follow code: 
[l,c]=size(matrix) % size (324,25)
for w=1:c
   for q = 1:l
   if matrix(q,w)==999999     
      matrix(q,w) =NaN;       
      matrix(isnan(matrix))= mean(matrix(:,w),'omitnan'); % in the case NaN is present in column 21, it will substitute the element  for mean of all element in column 21
   end
   end
end   
Could help me?
Grateful
1 comentario
  Walter Roberson
      
      
 el 5 de Jun. de 2019
				Omitnan did not exist in your release. One of the toolboxes had nanmean()
Respuesta aceptada
  Adam Danz
    
      
 el 5 de Jun. de 2019
        
      Editada: Adam Danz
    
      
 el 10 de Jun. de 2019
  
      An alternative that doesn't require any toolboxes:
nanidx = isnan(matrix(:,w)); 
mean(matrix(~nanidx,w)
Update following comments below
To compute the mean of each column of a matrix while ignoring a key value (999999), 
% Create fake data
key = 999999; 
matrix = magic(10); 
matrix(randi(100,1,10)) = key; 
% Identify the columns that contain at least one 999999
isKey = matrix == key; 
colIdx = any(isKey,1); 
% Count the number of rows per column that are not 999999
rowCount = sum(~isKey); 
% Temporarily replace 999999 with 0 and calculate the column means
matrixTemp = matrix .* ~isKey; 
colMean = sum(matrixTemp)./rowCount;
% The 2nd block above can be reduced to
%    isKey = matrix == key; 
%    colMean = sum(matrix .* ~isKey)./ sum(~isKey);
14 comentarios
Más respuestas (0)
Ver también
Categorías
				Más información sobre Text Data Preparation 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!


