Matlab: comment mettre en œuvre une dynamique de vecteur
Je suis en référence à un exemple comme ceci
J'ai une fonction à l'analyse des éléments d'un vecteur, 'entrée'. Si ces éléments ont une propriété particulière-je stocker leurs valeurs dans un vecteur, 'sortie'.
Le problème est que, à la mendicité, je ne sais pas le nombre d'éléments qu'il aura besoin de stocker dans " output so je ne sais pas sa taille.
J'ai une boucle, à l'intérieur je vais dans le vecteur, 'input', par l'intermédiaire d'un index. Quand j'en compte certains éléments de ce vecteur de déterminer les valeurs de 'input' et Il sera stocké dans un vecteur 'sortie' par le biais d'une phrase comme celle-ci:
For i=1:N %Where N denotes the number of elements of 'input'
...
output(j) = input(i);
...
end
Le problème est que j'obtiens une Erreur si je n'ai pas auparavant "déclarer" de "production". Je n'aime pas "déclarer" de "production" avant de rejoindre la boucle de sortie = entrée, parce qu'il stocker des valeurs d'entrée, dans lequel je ne suis pas intéressé et je pense que d'une certaine façon à supprimer toutes les valeurs je le garde qui ne sont pertinentes pour moi.
Personne ne m'éclairer sur ce problème?
Merci.
OriginalL'auteur Peterstone | 2010-12-30
Vous devez vous connecter pour publier un commentaire.
Comment compliqué, c'est de la logique dans la boucle for?
Si c'est simple, quelque chose de ce genre:
Sinon, si la logique est compliqué et vous avez affaire à de grosses vecteurs, je préallouer un vecteur qui stocke la possibilité d'enregistrer un élément ou non. Voici un exemple de code:
OriginalL'auteur Charles L.
La solution triviale est:
Si je ne sais pas si cela a de bonnes performances ou pas
output = [];
au début. Et la performance est terrible.C'est donc une bonne solution lorsque vous n'avez pas de soins sur les performances 🙂
OriginalL'auteur Nathan Fellman
Si
N
n'est pas trop grand, de sorte qu'il vous cause des problèmes de mémoire, vous pouvez pré-affecteroutput
à un vecteur de la même taille queinput
, et de supprimer tous les éléments inutiles à la fin de la boucle.Il y a deux alternatives
Si
output
serait trop gros s'il était affecté à la taille deN
, ou si vous ne connaissez pas la limite supérieure de la taille deoutput
, vous pouvez effectuer les opérations suivantesEnfin, si N est petit, il est parfaitement acceptable d'appeler
Noter que les performances se dégradent considérablement si N devient grand (dire >1000).
OriginalL'auteur Jonas