Azzera filtri
Azzera filtri

finding elements in a matrix`

2 visualizzazioni (ultimi 30 giorni)
Ananya Malik
Ananya Malik il 16 Ago 2016
Modificato: Thorsten il 16 Ago 2016
I have a a matrix A= [1 3 10; 1 8 10; 2 4 9] and an array x = [2 9]. i want to check if x is present in a single row of A. In this case it is true, so continue. Can anyone help? TIA.

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 16 Ago 2016
Modificato: Azzi Abdelmalek il 16 Ago 2016
A= [1 3 10; 1 8 10; 2 4 9]
x=[ 2 9]
for k=1:size(A,1)
idx=all(ismember(x,A(k,:)));
if idx
break
end
end
idx
  1 Commento
Ananya Malik
Ananya Malik il 16 Ago 2016
Modificato: Ananya Malik il 16 Ago 2016
Thanks @Azzi Abdelmalek for the solution. However I have one more query. If I have X=[1 2; 3 9; 3 10; 2 4] and A. If I run the code
for i = 1: length(X(:,1))
x= X(i,:);
for k=1:size(A,1)
idx=all(ismember(x,A(k,:)));
if idx
break;
else
s=[s; x 0];
end
end
end
The output I get is s=[1 2 0;1 2 0; 1 2 0;3 9 0; 3 9 0;3 9 0;2 4 0;2 4 0]. The result i want is s= [1 2 0; 3 9 0].
Can you please help.

Accedi per commentare.

Più risposte (1)

Thorsten
Thorsten il 16 Ago 2016
Modificato: Thorsten il 16 Ago 2016
X=[1 2; 3 9; 3 10; 2 4]
x = [2 9];
X = X(any(ismember(X, x),2), :);
s = [X zeros(size(X,1), 1)];
You also keep the last row, because it contains a 2, a number present in x.

Categorie

Scopri di più su Data Type Identification in Help Center e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by