Deleting rows of a matrix based on values from another matrix

25 Ansichten (letzte 30 Tage)
Hari
Hari am 8 Jul. 2022
Beantwortet: Johan am 8 Jul. 2022
I have a m x 3 matrix A, and a nx1 matrix B. I need to remove those rows of A if either column 1 or 2 of the matrix equals any value in B.

Akzeptierte Antwort

Johan
Johan am 8 Jul. 2022
You can use ismember() to do that:
A = randi(5,5,3)
A = 5×3
5 5 4 2 5 3 2 1 3 4 4 4 3 5 3
B = randi(5,2,1)
B = 2×1
5 1
% Find all the row where col 1 to 2 of A have a value in B
mask = any(ismember(A(:,1:2),B),2)
mask = 5×1 logical array
1 1 1 0 1
A(mask,:) = [] % delete the rows of A according to the mask
A = 1×3
4 4 4

Weitere Antworten (1)

Kritarth Sinha
Kritarth Sinha am 8 Jul. 2022
Bearbeitet: Kritarth Sinha am 8 Jul. 2022
Hello Hari,
You can simply use nested loops and for each value in column 1 or 2,you can check that is present in matrix B and do it accordingly.
Hope this will help.

Kategorien

Mehr zu Loops and Conditional Statements 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