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

2 Ansichten (letzte 30 Tage)
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.

Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 5 Dez. 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

Weitere Antworten (0)

Kategorien

Mehr zu Cell Arrays 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!

Translated by