[Matlab] Créer et remplir un vecteur ligne

Résolu/Fermé
manu78640 Messages postés 31 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 29 mai 2009 - 29 mai 2009 à 11:04
 Loulou&Kathhhhy - 10 mai 2017 à 10:46
Bonjour,


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

Cordialement,

Manu78640
A voir également:

1 réponse

Fee Fay Messages postés 635 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 31 mai 2009 375
31 mai 2009 à 02:34
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 !
54
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
0
Loulou&Kathhhhy
10 mai 2017 à 10:46
Merci pour tout on est en TP Préorientation SICOM et ça nous a vachement aidé merci c'est sympa et à +, bisoooooooous !!!!!!!!!!!!!!!!!!
0