[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
Loulou&Kathhhhy - 10 mai 2017 à 10:46
A voir également:
- Créer un vecteur ligne matlab
- Vecteur sur matlab - Meilleures réponses
- Remplir tableau matlab - Meilleures réponses
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Créer un groupe whatsapp - Guide
- Créer un compte instagram sur google - Guide
- Créer un compte gmail pour une autre personne - Forum Gmail
1 réponse
Fee Fay
Messages postés
635
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
31 mai 2009
377
31 mai 2009 à 02:34
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.
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) :
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 20Et 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); endLa 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); endEt pour finir, la méthode à utiliser est celle-ci :
v=exp(1./(1:20).^2);Je te souhaite une bien bonne nuit !
3 juil. 2015 à 13:54
10 mai 2017 à 10:46