Replacing NaN with its succeeding values
1 view (last 30 days)
Show older comments
I have an array which should replace the NaN with its succeeding value. For example:
A=[NaN NaN 1 1 0 0 NaN 0 NaN 1 1]
then output should be
B=[1 1 1 1 0 0 0 0 1 1 1].
Can someone please help me with this?
0 Comments
Accepted Answer
Brendan Hamm
on 2 Aug 2016
This is simply a 1-dimensional interpolation using the next method with extrapolation:
A=[NaN NaN 1 1 0 0 NaN 0 NaN 1 1]
x = 1:length(A); % Create a vector of indices
idx = ~isnan(A); % Find the locations of valid data
% Use the good data to interpolate on all the locations in x.
B = interp1(x(idx),A(idx),x,'next','extrap')
More Answers (1)
Andrei Bobrov
on 2 Aug 2016
A=[NaN NaN 1 1 0 0 NaN 0 NaN 1 1];
z = flip(A(:));
x = ~isnan(z);
z = z(x);
B = flip(z(cumsum(x)))';
0 Comments
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!