Les Allergies
Alimentaires
Posez votre question Signaler

[MATLAB] - temps d'exécution d'une variable

smo8000 6Messages postés 22 août 2008Date d'inscription - Dernière réponse le 22 août 2008 à 17:30
Bonjour, je désire créer une boucle comme suit :
une variable qui s'exécute durant x temps une fois ce temps dépassé une autre prend le relais pendant ce même x temps et ensuite cela revient sur la première.
Dans mon cas :
j'ai une vitesse par exemple
V1 = 10km/h
qui doit s'exécuter durant 30min ensuite une vitesse
V2 = 5Km/h
qui doit s'exécuter durant les 30 prochaines min puis cela doit revenir à V1 pendant 30 min et ainsi de suite
j'ai pensé a quelques chose dans le genre :
V1 = 10km/h;
while t<30min,
if t>30min, end
v2 = 5km/h;
while t>30min,
if t<30min, end
Déjà je voulais savoir si j'étais partie sur de bonne base ensuite je vois pas comment intégrer le faites que chaques phases dure 30 min puis la 2e prend le relais et ainsi de suite.
Je penses qu'il faudrait mettre le temps au démarrage du programme ensuite mettre un t+k avec k pair ou impair suivant la vitesse que l'on veut exécuter.
Débutant sur matlab je vous avoue que j'ai du mal à tout mettre en commum donc si quelqu'un veut bien m'aider j'apprécierai énormement :)
Merci
Lire la suite 

[MATLAB] - temps d'exécution d'une variable »

3 réponses
Réponse
+2
moins plus
Je suis tombé sur cela:

4. Optimisation des calculs
Les calculs sont accélérés de façon spectaculaire en utilisant des opérations vectorielles en
lieu et place de boucles. Comparons les deux fonctions suivantes (la commande tic déclenche
un chronomètre ; toc arrête le chronomètre et retourne le temps écoulé depuis tic) :
function [t,b] = test1(n)
% détermine le temps mis pour créer la liste
% des racines carrées des entiers compris entre 1 et n
m = 0 ;
tic ;
for k = 1 : 1 : n
b(k) = m+sqrt(k) ;
end
t = toc ;
function [t,b] = test2(n)
% détermine le temps mis pour créer la liste
% des racines carrées des entiers compris entre 1 et n
tic ;
a = 1 : 1 : n ;
b = sqrt(a) ;
t = toc ;


Tu peux faire un chrono et ajouter a chaque boucle le temps pour avoir le temps écoulé

V=15;
t=0;
while(<condition d'arrêt>)

   tic 
   
   ton traitement

   t=t+toc
  
   if (t<=30*60)
     t=0
     if(V=15)
         V=5;
     else V=15;
     end
  end
end


Je suis parti du principe que cela retourne des seconde mais à vérifier.

Ce n'est pas précis à la seconde étant donné que des charge seront utilisé hors du compteur mais c'est une diée.

Mich



Ajouter un commentaire
Réponse
+1
moins plus
Bon vu que tu ne précises pas de langage vais faire un petit algo, ça fait longtemps que je n'en ai pas fait :)

timer = 0
V1 = 10
V2 = 5
Vitesse = 0
tempsDebut = 0

        While (timer < 30) do

        timer = tempsDebut + getTime()

        EndWhile

        timer = 0
        tempsDébut = 0

        While (timer < 30) do

        timer = tempsDebut + getTime()

        EndWhile




Je te laisse le soin d'effectuer la conversion ;)
mich62120- 22 août 2008 à 16:30
Le language c'est MatLab.
Dsl j'ai pas trouvé comment faire, il y a bien une fonction pause mais elle arrêtera toute exécution au lieu de seulement compté.
Il faut faire une sorte d'interruption si tu veux un comptage du temps parallèle à ton application principale et je vois pas comment faire avec mon peu de connaissance en Matlab.

Bon courage Mich
Ajouter un commentaire
Ce document intitulé « [MATLAB] - temps d'exécution d'une variable » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?