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 :

Utilisation de la boucle FOR


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Utilisation de la boucle FOR
    Bonjour,

    Je suis débutant en Matlab, je suis actuellement entrain de développer un code pour mon projet de fin d'étude.

    Dans un premier temps j'ai importer mes données à partir d'un fichier Excell.

    %Declaration des données obtenues au cours du test d'une semaine%
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Nomfichier = 'DONNEES TEST.xlsx';
     
    Qminute = xlsread(Nomfichier,'AA:AA');
     
    Qminute = [ 1, 10081 ] % Une colonne et 10081 ( valeurs ) lignes qui sont des valeurs en minutes.
    % En voudrant ramener le vecteur Qminute en heure ( 10081/60 = 168), ce qui me conduira d'avoir une nouvelle taille de Qminute = [ 1, 168 ], pour cela j'ai procédé de la manière suivante%

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For j = 1
    Qheure = sum(Qminute(j:j+59))
     
    j= j+59; 
    end
    mais je me retrouve avec un résultat d'une seule valeur au lieu de 168 valeurs.

    J'ai besoin de votre aide svp.

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    je ne suis pas sûr d'avoir compris ce que tu cherches à faire, mais en ce qui concerne la boucle for, il faut lui indiquer un début et une fin et éventuellement le pas également. De plus il faut éviter de modifier la variable d'itération à l'intérieur de la boucle (j dans ton cas). Ici, le début est 1, la fin est 10081 et le pas est 60 (ces valeurs seront peut-être à adapter selon ce que tu veux faire). Ensuite, il faut utiliser un tableau pour stocker les valeurs, et étant donné que tu connais la taille du tableau final, il faut utiliser la préallocation de mémoire. Ce qui donnerait ici, j'ai supposé que Qminute est un vecteur d'une colonne et 10081 lignes (ce n'est pas clair dans ton code...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Qheure = zeros(round(10081 / 60), 1);
    for j = 1:60:10081
    	Qheure(j) = sum(Qminute(j:j+59));
    end

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Ce que je cherche , c'est de transformer le vecteur ( 1 colonne, 10081 lignes ) qui sont des valeurs minutes pour chaque ligne en heure ( 1 colonne, 168 lignes ).

    Ta proposition est tout à fait logique par rapport à mon code. Je l'ai exécuté sur MATLAB, mais j'ai le message d'erreur suivant :


    Code MATLAB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    clc
    Nomfichier = 'DONNEES TEST.xlsx';
    Q_minute = xlsread(Nomfichier,'AA:AA');
    Q_heure = zeros(round(10081/60),1);
    for j=1:60:10081
        Q_heure(j) = sum( Q_minute(j:j+59));
    end

    Nom : Erreur code.jpg
Affichages : 113
Taille : 39,8 Ko

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Il y a déjà un premier problème dans mon code, il faut modifier les indices de Q_heure comme ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    clc
    Nomfichier = 'DONNEES TEST.xlsx';
    Q_minute = xlsread(Nomfichier,'AA:AA');
    Q_heure = zeros(round(10081/60),1);
    for j=1:60:10081
        Q_heure(round(10081/60)) = sum( Q_minute(j:j+59));
    end
    Ensuite lorsque j arrive à 10081, il ne peut pas faire la somme des 60 éléments puisqu'il n'y a plus de valeurs après 10081, donc il y a un choix à faire ici, soit s’arrêter à 10080 et dans ce cas la valeur 10081 est ignorée, soit faire autrement.

Discussions similaires

  1. utilisation de la boucle for
    Par fcboumi13 dans le forum MATLAB
    Réponses: 1
    Dernier message: 16/06/2009, 20h11
  2. [Wavelet Toolbox] Utilisation d'une boucle FOR-END
    Par bestorchidee dans le forum MATLAB
    Réponses: 8
    Dernier message: 05/01/2009, 21h09
  3. Utilisation d'une boucle "for"
    Par nekashokoi dans le forum Langage
    Réponses: 2
    Dernier message: 25/12/2008, 23h16
  4. [Tableaux] Utilisation FPDF et boucle for
    Par Flynt dans le forum Langage
    Réponses: 3
    Dernier message: 27/02/2008, 10h20
  5. Utilisation de la boucle for
    Par Lost in dans le forum MATLAB
    Réponses: 2
    Dernier message: 21/02/2008, 18h42

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