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 :

Simulation temps réel ?


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    R&D
    Inscrit en
    Mai 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : R&D
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2008
    Messages : 101
    Par défaut Simulation temps réel ?
    Bonjour,

    Je voudrai simuler un affichage en temps réel de données (Je n'ai pas Simulink sur mon pc).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    x=[1:2000]';
    y=rand(2000,1);
     
    h=figure;
    for i=1:2000
        plot(x(i, : ),y(i, : ),'*')
        hold on
        pause(.005)
    end
    La matrice X représente le temps de 1 à 2000 secondes et la matrice y les valeurs correspondantes à chaque temps.

    Le problème c'est que plus le temps s'écoule et plus l'affichage ralenti... J'ai juste fais une boucle avec un hold on des points à chaque t+1.

    Y aurait t'il un moyen pour faire une simulation accélérée plus rapide que ce que cela donne actuellement... et surtout un moyen pour que cette simulation ne s'arrête pas ? Car ici je n'ai mis que 2000 points et dans la réalité j'en ai 10000 environ !

    J'ai essayé sur des pc plus puissants et apparemment cela ne change rien, au bout d'un certain temps, l'affichage ralenti puis s'arrête à une certaine valeur !

    (En pièce jointe le graph final attendu)

    Merci de votre aide,

    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Essaye de faire comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    x=[1:2000]';
    y=rand(2000,1);
     
    h=figure;
    ax = axes('NextPlot','add');
    for i=1:2000
        plot(ax,x(i),y(i),'*');
        drawnow;
    end
    Duf

  3. #3
    Membre confirmé
    Homme Profil pro
    R&D
    Inscrit en
    Mai 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : R&D
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2008
    Messages : 101
    Par défaut
    Je viens de tester cette solution mais celle ci est un peu plus lente...

    avec le "tic toc" pour i=1:1000 :
    Ma solution : 64.1 sec
    Votre solution : 70.7 sec

    Et l'affichage ralenti toujours au cours du temps....
    Par exemple de 1 à 500 cela met environ 18 sec alors que de 1 à 1000 cela prend 65 secondes... Je vous laisse imaginer de 1 à 10 000 !

    Merci de votre aide... Si quelqu'un à une autre idée je suis preneur !


  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Par défaut
    J'ai pas réussi à faire mieux.
    Désolé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    x=(1:10000)';
    y=rand(10000, 1);
     
    axes1 = axes;
    set(axes1, 'NextPlot', 'replacechildren')
    xlim(axes1,[0 10000]);
    ylim(axes1,[0 1]);
    tic
    for i=1:10000
        plot(x(1:i), y(1:i), '*')
        pause(.005)
    end
    toc
    Normalement, il ne devrait plus trop y avoir de ralentissements... En théorie
    L'idée c'est de définir la taille des axes et de retracer la totalité du graph à chaque itération. Étonnement, rajouter seulement un point plutôt que de retracer la totalité ne fait pas gagner de temps, au contraire.

    Bon courage.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Une autre solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    x = 1:200;
    y = rand(1,200);
     
    h = figure;
     
    p = plot(nan,nan,'*');
     
    for i=1:200
        set(p,'xdata',x(1:i),'ydata',y(1:i))
        drawnow
    end

Discussions similaires

  1. Graphes temps-réel pour les simulations
    Par sciencesmaths dans le forum Autres
    Réponses: 1
    Dernier message: 19/04/2013, 15h02
  2. Simuler l'heure en temps réel
    Par Nanty dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/05/2011, 11h32
  3. Réponses: 1
    Dernier message: 05/06/2008, 19h20
  4. Simulation temps réel d'un pendule
    Par dnaprotector dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 25/07/2005, 07h18

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