replacing every columns of nan with the mean of each columns

조회 수: 2 (최근 30일)
crixus
crixus 2015년 3월 19일
편집: crixus 2015년 3월 19일
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개)

태그

Community Treasure Hunt

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

Start Hunting!

Translated by