Can I replace the row of the matrix when its value is equal to the previous row?

2 vues (au cours des 30 derniers jours)
Hello,
I have a following matrix as a sample/
A = [1 2 3; 4 5 6; 1 2 3; 1 2 3];
And I would like to replace the value of entire row if the row is equal to the previous row.
So in this case,
B = [1 2 3; 4 5 6; 1 2 3; 0 0 0]
Because the last row is equal to the 3rd row of the matrix.
Is there anyway I could do this?
Thank you.

Réponse acceptée

Atsushi Ueno
Atsushi Ueno le 5 Déc 2021
A = [1 2 3; 4 5 6; 1 2 3; 1 2 3]
A = 4×3
1 2 3 4 5 6 1 2 3 1 2 3
diff(A,1)
ans = 3×3
3 3 3 -3 -3 -3 0 0 0
replace_row = [false; ~all(diff(A,1),2)]
replace_row = 4×1 logical array
0 0 0 1
A(replace_row, :) = 0
A = 4×3
1 2 3 4 5 6 1 2 3 0 0 0

Plus de réponses (0)

Catégories

En savoir plus sur Multidimensional Arrays 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!

Translated by