Error using 'omitnan'

19 visualizaciones (últimos 30 días)
Guilherme Lopes de Campos
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
Walter Roberson el 5 de Jun. de 2019
Omitnan did not exist in your release. One of the toolboxes had nanmean()

Iniciar sesión para comentar.

Respuesta aceptada

Adam Danz
Adam Danz el 5 de Jun. de 2019
Editada: Adam Danz el 10 de Jun. de 2019
Check out nanmean() in the stats & machine learning toolbox.
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
Guilherme Lopes de Campos
Guilherme Lopes de Campos el 10 de Jun. de 2019
Thank so much Adam,
I don't have words to show my thanks,
I am very grateful,
Guilherme
Adam Danz
Adam Danz el 10 de Jun. de 2019
I've been there; glad I could help!

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by