How to do element by element comparison?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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?
Risposta accettata
venkat vasu
il 17 Ott 2012
Modificato: Matt Fig
il 17 Ott 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 Commento
Azzi Abdelmalek
il 17 Ott 2012
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Matrix Indexing 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!