How can I replace NaN elements with the nearest value in the same column?
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
sal135
am 25 Apr. 2017
Bearbeitet: sal135
am 27 Apr. 2017
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 Kommentare
AstroGuy1984
am 25 Apr. 2017
Bearbeitet: AstroGuy1984
am 25 Apr. 2017
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.
Akzeptierte Antwort
Andrei Bobrov
am 25 Apr. 2017
Bearbeitet: Andrei Bobrov
am 26 Apr. 2017
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 Kommentare
Andrei Bobrov
am 26 Apr. 2017
>> 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
>>
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!