replacing every columns of nan with the mean of each columns

1 次查看(过去 30 天)
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 个评论
crixus
crixus 2015-3-19
编辑:Guillaume 2015-3-19
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.

请先登录,再进行评论。

采纳的回答

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

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Graphics Object Programming 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by