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 :

probleme dans mon ordonnancement [Débutant]


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut probleme dans mon ordonnancement
    salut tous,

    j'ai un soucis dans mon ordonnancement, j'ai une matrice "time_temp"qui à deux colonnes, la premiere colonne contient des temps et la deuxieme des temperatures.

    Je voudrais à partir de cette matrice avoir un vecteur où les données temps et température sont alternées:

    tps(1) temp(1) tps(2) temp(2) tps(3) temp(3) ....

    j'ai donc effectué ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    vecteur=zeros(2*length(time_temp),1);
    a=1;
    for i=1:2:(length(time_temp)-1)
        vecteur(i)=time_temp(a,1);
        vecteur(i+1)=time_temp(a,2);
        a=a+1;
    end
    le probleme c'est qu'a la fin de mon vecteur il y a plein de 0 ... ??

    pourtant ce que j'ai fais me parait correct... voyez vous où est mon blem ?

    ps: je n'ai pas utilisé de fonction matlab toute prêtes car j'aurais surement a refaire le meme code ensuite en C

  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 : 52 882
    Points
    52 882
    Par défaut
    Lors de la dernière itération, i vaut length(time_temp)-1. L'indice du dernier élément atteint de vecteur vaut donc length(time_temp). Tu ne remplis donc que la moitié du vecteur vecteur.

    Il faut itérer comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for n = 1:size(time_temp,1)
       vecteur(2*(n-1)+1) = ...;
       vecteur(2*n) = ...;
    end
    Une solution vectorisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vecteur = time_temp.';
    vecteur = vecteur(:);
    Mais cette solution est bien entendu inutile si le but est de convertir le code en C
    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
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Dut Voir le message
    Lors de la dernière itération, i vaut length(time_temp)-1. L'indice du dernier élément atteint de vecteur vaut donc length(time_temp). Tu ne remplis donc que la moitié du vecteur vecteur.
    à oui en effet ! merci DUT !!!

    du coup ceci doit etre bon (pour rester dans le meme esprit):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    a=1;
    for i=1:1:(length(time_temp))
        vecteur(a)=time_temp(i,1);
        vecteur(a+1)=time_temp(i,2);
        a=a+2;
    end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. un petit probleme dans mon code
    Par hanene_z dans le forum C
    Réponses: 9
    Dernier message: 22/12/2006, 17h06
  2. Probleme dans mon code recherche dans un fichier Xml
    Par dederfred dans le forum Delphi
    Réponses: 11
    Dernier message: 21/10/2006, 16h51
  3. probleme dans mon script
    Par bigoter dans le forum Langage
    Réponses: 4
    Dernier message: 03/07/2006, 15h19
  4. probleme dans mon programme
    Par phpaide dans le forum Langage
    Réponses: 8
    Dernier message: 05/06/2006, 12h57
  5. [VBA-E]Probleme dans mon code ??? merci de votre aide
    Par gregantibes dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/04/2006, 18h24

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