Azzera filtri
Azzera filtri

Delete row and column from matrix

1 visualizzazione (ultimi 30 giorni)
Rachel Ramirez
Rachel Ramirez il 9 Dic 2020
Risposto: Kedar Ingle il 9 Dic 2020
I have matrix A that is 100x5 and a matrix B that is 10x2. I want to go through matrix A and delete all rows that have matrix B first column values in matrix A but only from it's first and/or second column (not the other 3). I'm thinking of a foor loop and and if statement inside but not sure how to. Could you someone elaborate how to approach the problem?
  1 Commento
KSSV
KSSV il 9 Dic 2020
Read about ismember. This will give you indices which are common in both the matrices.

Accedi per commentare.

Risposte (1)

Kedar Ingle
Kedar Ingle il 9 Dic 2020
It is my understanding that you want to remove rows from matrix A whose elements in column 1 or 2 come from column 1 of matrix B?
The checking of whether matrix A elements (from columns 1 and 2) are present in matrix B (column 1) could be done with the function ismember. The solution could look something like this:
function [output] = reduceA(A,B)
i=1;
while i <= size(A, 1) % while not for, as the loop size keeps on reducing
if(ismember(A(i,1), B(:, 1)) || ismember(A(i,2), B(:, 1)))
A(i, :) = [];
else % only increment the counter if we haven't deleted a row...
i = i + 1;
end
end
output = A;
end

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