How to do element by element comparison?
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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?
Akzeptierte Antwort
venkat vasu
am 17 Okt. 2012
Bearbeitet: Matt Fig
am 17 Okt. 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 Kommentar
Azzi Abdelmalek
am 17 Okt. 2012
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Get Started with MATLAB finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!