Filling the gaps in a vector
Afficher commentaires plus anciens
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]
Réponse acceptée
Plus de réponses (3)
Image Analyst
le 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 commentaire
joseph Frank
le 23 Jan 2013
Azzi Abdelmalek
le 23 Jan 2013
Modifié(e) : Azzi Abdelmalek
le 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 commentaire
joseph Frank
le 24 Jan 2013
Walter Roberson
le 23 Jan 2013
0 votes
You might also be interested in John D'Errico's FEX contribution inpaint_nans
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!