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

Messages postés
31
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
29 mai 2009
- - Dernière réponse :  Loulou&Kathhhhy - 10 mai 2017 à 10:46
Bonjour,


Je souhaite créer et remplir un vecteur ligne de 20 valeurs, comment faire ?

Cordialement,

Manu78640
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
639
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
31 mai 2009
371
51
Merci
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 !

Dire « Merci » 51

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63387 internautes nous ont dit merci ce mois-ci

svp j'arrive pas à faire le test arch sur matlab , quelq'un peut m'expliquer svp sourtout je trouve des difficultés au niveau des résidus
-
Merci pour tout on est en TP Préorientation SICOM et ça nous a vachement aidé merci c'est sympa et à +, bisoooooooous !!!!!!!!!!!!!!!!!!