Quelqu'un peut-il expliquer pourquoi dans l'exemple A le résultat est le vecteur 1x6 (ce qui est logique et était ce que je m'attendais) alors que dans l'exemple B le résultat est le vecteur 1x4?Indexation en vecteur
Dans l'exemple B si je prédéfinis la taille de newvec pour être un vecteur 1x6, le résultat est le vecteur 1x6 correct. Juste ne pas comprendre ce qui se passe.
Exemple A
vec = [0 2 3 0 5 0] %1x6
newvec(vec == 0) = 1 %produces a 1 x 6 vector
Exemple B
vec = [0 2 3 0 5 3] %1 x 6
newvec(vec == 0) = 1 %produces a 1 x 4 vector
votre exemple n'a pas de sens. Veuillez ajouter le code correct pour le problème que vous avez. le code que vous avez ajouté donne toujours un vecteur 1x6 – ASantosRibeiro
@ASantosRibeiro: pas si vous émettez 'clear newvec' avant chaque exemple :) –
+1 question intéressante. Les réponses vous donnent une idée de ce qui se passe, mais juste pour ajouter quelque chose. Si vous n'avez pas de vecteur dans l'espace de travail et que vous le créez en assignant par exemple 'A (5) = 1' (où' A' n'existait pas auparavant), matlab créera A assez grand pour mettre '1 'dans le 5ème élément et remplissez le reste avec des zéros. Essayez-le. Vous pouvez également développer une matrice de cette façon, par exemple 'x = 1: 5; x (10) = 1', essayez cela et vous devriez le voir remplir les éléments 6 à 9 avec des zéros. Je suppose que vous pourriez penser à votre problème de la même manière, vous avez dit à matlab d'assigner aux positions 1 et 4 pour qu'il s'arrête à 4 – Dan