IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Vectoriser une boucle


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Vectoriser une boucle
    Bonjour,
    J'aimerais vectoriser la boucle suivante pour que MATLAB la calcule plus rapidement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    N = 1000;
    T = 100;
    sigma=1
    randvals = sigma*randn(T,N)
    x = NaN(T,N);
    x(1, : ) = 0;
    for t=2:T
    x(t, : ) = x(t-1, : ) + randvals(t, : )
    end
    plot(x)
    J'ai essayé ceci, mais cela me donne seulement les deux premières lignes de la matrice x, alors qu'elle soit complètement remplie (dimension (T*N))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    N = 1000;
    T = 100;
    sigma=1
    x = NaN(T,N);
    x(1,: ) = 0;
    x(2:T,: ) = x(1:T-1,: )+sigma*randn(T-1,N)
    plot(x)
    L'un ou l'une d'entre vous pourrait-il m'aider?
    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 160
    Points
    53 160
    Par défaut
    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    N = 1000;
    T = 100;
    sigma = 1;
     
    randvals = sigma*randn(T-1,N);
     
    x = zeros(T,N);
    x(2:end,:) = cumsum(randvals,1);
     
    plot(x)
    Mais je ne suis pas certain que cela accélère réellement le temps de calcul…
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup. C'est exactement ce que je cherchais à faire.
    Maintenant, si j'aimerais ajouter une constante et un coefficient qui multiplie mon terme de la période précédente, c'est à dire au lieu de vouloir simuler x(t)= x(t-1) +u(t) j'aimerais simuler x(t) = c + p*x(t-1) + u(t), puis-je aussi utiliser cette technique? Je ne vois pas vraiment ou je peux ajouter les nouveaux paramètres.

Discussions similaires

  1. [Débutant] soucis avec la vectorisation d'une boucle imbriquée
    Par Imène_23 dans le forum MATLAB
    Réponses: 10
    Dernier message: 26/07/2011, 19h26
  2. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 13h45
  3. Faire Vectoriser une boucle avec icpc
    Par reptils dans le forum C++
    Réponses: 37
    Dernier message: 27/03/2010, 17h19
  4. Aide pour vectoriser une boucle
    Par Hew dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 14/03/2010, 11h24
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo