replacing every columns of nan with the mean of each columns

1 view (last 30 days)
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 Comment
crixus
crixus on 19 Mar 2015
Edited: Guillaume on 19 Mar 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.

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 19 Mar 2015
A simple vectorised way of achieving what you want:
median1 = repmat(nanmean(combinedatamat), size(combinedatamat, 1), 1);
combinedatamat(isnan(combinedatamat)) = median1(isnan(combinedatamat))

More Answers (0)

Categories

Find more on Graphics Object Programming in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!