Azzera filtri
Azzera filtri

how to fill with the last non empty value across each column

3 visualizzazioni (ultimi 30 giorni)
Hi all, how can I fill the cells in each row with the last non empty or non zero value please? For example : the matrix is [0 9 7 0 0 ; 0 0 0 6 0;0 2 0 0 0; 8 0 4 2 0]; The result shows b=[09700;09760;02760;82420]. Any help is welcomed. Thank you very much.

Risposta accettata

Stephen23
Stephen23 il 30 Ott 2015
Modificato: Stephen23 il 30 Ott 2015
A = [0 9 7 0 0 ; 0 0 0 6 0;0 2 0 0 0; 8 0 4 2 0]
B = A;
for k = 2:size(B,1)
idx = B(k,:)==0;
B(k,idx) = B(k-1,idx);
end
Produces this output:
>> A
A =
0 9 7 0 0
0 0 0 6 0
0 2 0 0 0
8 0 4 2 0
>> B
B =
0 9 7 0 0
0 9 7 6 0
0 2 7 6 0
8 2 4 2 0
  3 Commenti
Stephen23
Stephen23 il 30 Ott 2015
Modificato: Stephen23 il 30 Ott 2015
Run this new code afterwards
idy = true;
for k2 = k:-1:1
idy = idy & A(k2,:)==0;
B(k,idy) = 0;
end
to get this:
>> B
B =
0 9 7 0 0
0 9 7 6 0
0 2 7 6 0
8 0 4 2 0

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements 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!

Translated by