How can I replace NaN elements with the nearest value in the same column?
조회 수: 4 (최근 30일)
이전 댓글 표시
I am trying to replace NaN's in a vector field with the nearest value.
% I have:
M=
NaN 12
18 14
NaN NaN
NaN NaN
NaN 16
12 NaN
12 NaN
NaN 12
16 NaN
%I desire:
M=
18 12
18 14
12 16
12 16
12 16
12 12
12 12
16 12
16 12
Any information will be helpful. Thank you
댓글 수: 2
AstroGuy1984
2017년 4월 25일
편집: AstroGuy1984
2017년 4월 25일
What do you mean by "nearest"? Do you mean "next good value"? Because that's what you appear to desire. For example the second NaN in column 1 is closer to 18 than 12.
채택된 답변
Andrei Bobrov
2017년 4월 25일
편집: Andrei Bobrov
2017년 4월 26일
FIXED 2
m = flipud(M)
t = ~isnan(m);
ii = cumsum(t);
ii(ii == 0) = 1;
ii = bsxfun(@plus,[0,ii(end,1:end-1)],ii);
m1 = m(t);
out = flipud(m1(ii))
댓글 수: 6
Andrei Bobrov
2017년 4월 26일
>> m = flipud(M);
t = ~isnan(m);
ii = cumsum(t);
ii(ii == 0) = 1;
ii = bsxfun(@plus,[0,ii(end,1:end-1)],ii);
m1 = m(t);
out = flipud(m1(ii))
out =
18 12
18 14
12 16
12 16
12 16
12 12
12 12
16 12
16 12
>>
추가 답변 (1개)
참고 항목
카테고리
Help Center 및 File Exchange에서 NaNs에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!