2017-03-19 1 views
1

J'ai le vecteur [0 0 1 1 0 1 1 0 1]. Je voudrais trouver des indices de 0 et 1s. Je l'ai essayé d'utiliser la commande find, mais je suis obtenir:Erreur Matlab en utilisant la commande find

0x1 empty double column vector 
+1

S'il vous plaît modifier la question et ajouter ** le code exact que vous êtes en utilisant **, et quelle est la sortie désirée dans ce cas? Qu est ce que tu veux faire avec? –

Répondre

1

Alors que aahung's answer retourne correctement les positions des 0 's et 1' s , le cas typique d'utilisation de ces indices serait de choisir des éléments d'un autre tableau correspondant à ces positions. Si tel est le cas, il faut compter sur l'indexation logique au lieu defind:

tfArr = [0 0 1 1 0 1 1 0 1]; 
data = reshape(magic(3),1,[]); % [8,3,4,1,5,9,6,7,2] 

dataWhereOnes = data(logical(tfArr)) 
% equivalently to the above : data(~~tfArr) 
dataWhereZeros = data(~tfArr) 

qui se traduit par:

dataWhereOnes = 
    4  1  9  6  2 

dataWhereZeros = 
    8  3  5  7 
+0

c'est facile de rechercher les positions ici mais que faire si c'est un vecteur de 1000 éléments – rameez

+0

Aucune différence que ce soit . –

+0

merci pour votre aide..guys – rameez

1

Je pense que ce code vous aidera à:

>> arr = [0 0 1 1 0 1 1 0 1]; 
>> find(arr == 0) 

ans = 

    1  2  5  8 

>> find(arr == 1) 

ans = 

    3  4  6  7  9 
+0

j'ai essayé ceci mais j'obtiens une erreur comme en question – rameez

+1

Plz postez vos * codes * et erreur, ou nous ne pouvons pas vous aider – xhg