replacing every columns of nan with the mean of each columns

2 Ansichten (letzte 30 Tage)
crixus
crixus am 19 Mär. 2015
Bearbeitet: crixus am 19 Mär. 2015
Hi all, i want to replace every columns of nan with the mean of each columns and i used the following code
median1 = nanmean(combinedatamat)
[rows, columns] = size(combinedatamat);
n = 0 ;
for col = 1 : columns
n = n + 1;
combinedatamat(isnan(combinedatamat(:,n))) = median1(1,n) ;
end
What i get is the first column of combinedatamat being replaced with the last columns of median1 while the rest of the columns in combinedatamat still contain NAN, can i know what is the error here ? thanks in advance
  1 Kommentar
crixus
crixus am 19 Mär. 2015
Bearbeitet: Guillaume am 19 Mär. 2015
median = nanmean(combinedatamat);
for n = 1 : size(combinedatamat,2)
for nn = 1:size(combinedatamat,1)
if (isnan(combinedatamat(nn,n)))
combinedatamat(nn,n) = median(:,n);
end
end
end
this seems to work well.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Guillaume
Guillaume am 19 Mär. 2015
A simple vectorised way of achieving what you want:
median1 = repmat(nanmean(combinedatamat), size(combinedatamat, 1), 1);
combinedatamat(isnan(combinedatamat)) = median1(isnan(combinedatamat))

Weitere Antworten (0)

Kategorien

Mehr zu Graphics Object Programming finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by