If I have an array and I need to find an element in the array how do I go about it?
Afficher commentaires plus anciens
say states,
states = [1 0 0;
1 1 0
0 1 0
0 1 1
0 0 1
1 0 1
1 1 1];
C = 110;
How do I find the index of C in states and call it?
Ideally C is 2 then states(2) will give me 110 what key word can I use? or How do I go about it?
Réponse acceptée
Plus de réponses (2)
Compute
100*states(:,1)+10*states(:,2)+states(:,3)
and use "find" to compare with C.
1 commentaire
Also using matrix multiplication:
states = [1,0,0; 1,1,0; 0,1,0; 0,1,1; 0,0,1; 1,0,1; 1 1 1];
C = 110;
X = find(C==states*[100;10;1])
states = [1 0 0; 1 1 0; 0 1 0; 0 1 1; 0 0 1; 1 0 1; 1 1 1];
C = [1 1 0];
for i=1:length(states), if states(i,:)==C, idx=i; end, end
fprintf('States=C at row %d.\n',idx)
Not elegant, but it works.
1 commentaire
If there are multiple matching rows, the code above will report the last row only. In order to get all rows that match, you could do
states = [1 0 0; 1 1 0; 0 1 0; 0 1 1; 0 0 1; 1 0 1; 1 1 1; 1 1 0];
C = [1 1 0]; % states==C at rows 2 and 8
idx=[];
for i=1:length(states), if states(i,:)==C, idx=[idx,i]; end, end
disp(idx)
Catégories
En savoir plus sur Matrix Indexing dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!