Filling the gaps in a vector
Show older comments
I have a vector of nans
A=[nan;nan;2;nan;4;nan;nan;nan;7;nan;nan;nan;nan] how can I fill the nan gaps by the closest number (for beginning and mid values it is the closest upper;for the last values it is the closest lower value). i,e how can reproduce the vector to become A=[2;2;2;4;4;7;7;7;7;7;7;7;7]
Accepted Answer
More Answers (3)
Image Analyst
on 23 Jan 2013
0 votes
Do you have the Image Processing Toolbox? If so, you can use imdilate, if you're clever about it.
1 Comment
joseph Frank
on 23 Jan 2013
Azzi Abdelmalek
on 23 Jan 2013
Edited: Azzi Abdelmalek
on 23 Jan 2013
A=[nan;nan;2;nan;4;nan;nan;nan;7;nan;nan;nan;nan]
B=A;
idx=find(isnan(A));
idx1=fliplr(find(~isnan(A)));
for k=1:numel(idx)
a=idx(k);
[~,ii]=min(abs(a-idx1));
B(idx(k))=A(idx1(ii));
end
1 Comment
joseph Frank
on 24 Jan 2013
Walter Roberson
on 23 Jan 2013
0 votes
You might also be interested in John D'Errico's FEX contribution inpaint_nans
Categories
Find more on Creating and Concatenating Matrices 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!