Filling the gaps in a vector
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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]
0 Commenti
Risposta accettata
Andrei Bobrov
il 23 Gen 2013
Modificato: Andrei Bobrov
il 23 Gen 2013
A=[nan;nan;2;nan;4;nan;nan;nan;7;nan;nan;nan;nan];
b = ~isnan(A);
k = cumsum(flipud(b));
k(k==0) = 1;
n = flipud(A(b));
s = n(k);
out = flipud(s);
or
t = ~isnan(A);
k = find(t) + 1;
z = zeros(size(A));
z(k(k <= numel(A))) = 1;
q = cumsum(z) + 1;
q(q > nnz(t)) = max(q) - 1;
p = A(t);
out = p(q);
0 Commenti
Più risposte (3)
Image Analyst
il 23 Gen 2013
Do you have the Image Processing Toolbox? If so, you can use imdilate, if you're clever about it.
Azzi Abdelmalek
il 23 Gen 2013
Modificato: Azzi Abdelmalek
il 23 Gen 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
Walter Roberson
il 23 Gen 2013
You might also be interested in John D'Errico's FEX contribution inpaint_nans
0 Commenti
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!