Les Allergies
Alimentaires
Posez votre question Signaler

[Matlab] Créer et remplir un vecteur ligne [Résolu]

manu78640 41Messages postés 2 octobre 2008Date d'inscription - Dernière réponse le 31 mai 2009 à 02:34
Bonjour,
Je souhaite créer et remplir un vecteur ligne de 20 valeurs, comment faire ?
Cordialement,
Manu78640
Lire la suite 

[Matlab] Créer et remplir un vecteur ligne »

1 réponses
Réponse
+9
moins plus
Bonsoir mon ami !

Avec Matlab, les déclarations ne sont pas utiles et il est plus rapide de travailler en vectoriel. Pour cela, la plupart des fonctions Matlab s'utilise vectoriellement (cos, sin, log, ...) et les opérateurs * / ^ etc... peuvent s'utiliser membre à membre en ajoutant un . avant les opérateurs comme ceci : .* ./ .^

Si tu n'as pas d'autre choix que de remplir un vecteur dans une boucle, bien qu'il ne soit pas nécessaire de déclarer sa taille avant l'entrée dans la boucle, il est quand même plus rapide de le faire, sinon Matlab va se voir obligé d'updater l'espace mémoire réservée au vecteur à chaque passage dans la boucle en question ; dans ce cas, une solution possible est de définir initialement un vecteur de la taille voulue rempli de zéros par exemple.

Voici quelques exemples quelques commandes simples.
v=zeros(1,20); % Définit le vecteur ligne de longueur 20 et rempli de 0
v=ones(1,20); % Définit le vecteur ligne de longueur 20 et rempli de 1
v=(1:20); % Définit le vecteur ligne [1,2,3,...,18,19,20]
v=(4:3:61); % Définit le vecteur ligne [4,7,10,...,55,58,61]
v=(32:-1:13); % Définit le vecteur ligne [32,31,30,...,15,14,13]
v=(55:-2:17); % Définit le vecteur ligne [55,53,51,...,21,19,17]
v=linspace(0,1,20); % Définit la subdivision régulière de [0,1] de longueur 20
Et il y a encore beaucoup d'autres possibilités que tu découvriras...

Enfin, voici quelques explications supplémentaires concernant ces histoires de boucle et de vectorialisation. Supposons que tu veuilles définir le vecteur v=[exp(1²), exp(1/2²),exp(1/3²),...,exp(1/39²),exp(1/40²)], la méthode la plus lente et la plus laide serait la suivante (vraiment une horreur sous Matlab) :
for k=1:20
v(k)=exp(1/k^2);
end
La méthode suivante, bien qu'un peu mieux, reste néanmoins une horreur comme la précédente :
v=zeros(1,20) % La taille est connue avant la boucle, c'est mieux
for k=1:20
v(k)=exp(1/k^2);
end
Et pour finir, la méthode à utiliser est celle-ci :
v=exp(1./(1:20).^2);
Je te souhaite une bien bonne nuit !
Ajouter un commentaire
Ce document intitulé « [Matlab] Créer et remplir un vecteur ligne » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?