How to do element by element comparison?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Given a 2d matrix, say 10x4 with many numbers, lots of which are zeros, I need a matrix that replaces every zero entry with the value of the last non-zero entry in the same column that is before it. for example for the given input:
[0 0 4 0;
0 3 1 0;
0 0 0 2;
0 0 6 2;
3 4 5 6;
8 0 0 9;
0 0 0 0;
0 0 0 0;
0 0 0 0]
output:
[0 0 4 0;
0 3 1 0;
0 3 1 2;
0 3 6 2;
3 4 5 6;
8 4 5 9;
8 4 5 9;
8 4 5 9;
8 4 5 9]
I've experimented with circshift, if statements and for loops but haven't been able to make much headway. Does anyone have suggestions?
Réponse acceptée
venkat vasu
le 17 Oct 2012
Modifié(e) : Matt Fig
le 17 Oct 2012
Hi.. This code surely will help you and you can check n matrix also.
a=[0 0 4 0; 0 3 1 0; 0 0 0 2; 0 0 6 2; 3 4 5 6; 8 0 0 9; 0 0 0 0; 0 0 0 0; 0 0 0 0];
[r c d]=size(a);
for i=1:r
j=a(i,:);
if i==1
prev=j;
else
b=find(j==0);
for k=1:length(b);
a(i,b(k))=prev(b(k));
end
prev=a(i,:);
end
end
a
1 commentaire
Azzi Abdelmalek
le 17 Oct 2012
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!