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 :

Gestion de l'heure d'été/hiver (ajout/suppression dans la matrice)


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Gestion de l'heure d'été/hiver (ajout/suppression dans la matrice)
    Bonjour à tous !!

    Je voudrais un peu d'aide si possible . Je tourne en rond depuis un moment et si quelqu'un pouvait m'aider ce serait super
    cool de votre part !
    Alors voici mon probleme:
    J'ai une matrice 2xn.
    il s'agit d'une matrice composée d'un premier vecteur de date et son vecteur de prix correspondant chaque jour
    à chaque heures, (donc 24 prix par jour).


    -J'aimerai que lorsqu'on tombe sur une heure d'été on ajoute une ligne de date à 3h du matin
    qu'on ajoute le meme prix correspondant à 3h du matin. (ce qui revient à créer un doublon du prix correspondant à 3h)

    -J'aimerai lorsqu'on tombe sur une heure d'hiver, l'heure de 3 heure du matin soit effacée ainsi que le prix
    correspondant sur la meme ligne.

    J'ai déjà crée des fonctions repérant les différents jours fériés, d'une année. J'ai également réussi
    a crée le doublon à l'heure d'été mais je n'arrive pas à créer le doublon du prix correspondant dans
    la deuxieme colone.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    date_base(x1,x2); %la fonction qui me donne mon intervalle de date à chaque heure codée comme cela 
     
    w=1+w1;
    start_date = datenum(x1,y1,z1,u1,v1,w);
    end_date = datenum(x2,y2,z2,u2,v2,w2);
    interval = datenum(x2,0,0,1,0,0)-datenum(x2,0,0,0,0,0); % 1 hour interval
     
    date_range=[start_date:interval:end_date]';
     
    B=date_range;
    U=datenum(B);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    ete_start=changement_heure_ete(x1); %Ma fonction qui me renvoie l'heure dété de l'année x1
    hiver_start=changement_heure_hiver(x1); %Ma fonction qui me renvoie l'heure dété de l'année x2
    date_avec_ete=[date_base(date_base<=ete_start);ete_start;date_base(date_base>=ete_start)];


    Et pour l'heure d'hiver meme chose j'ai pourtant essaye de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    date_avec_hiver=[date_base(date_base<hiver_start);date_base(date_base>hiver_start)];
    ou encore date_base(date_base~hiver_start);
    %mais ca ne suprime rien du tout ....
    Mais à chaque fois Matlab me renvois le meme vecteur et n'efface rien ni au niveau des dates
    ni au niveau des prix.
    En 2015 le changement d'heure en été sera le 29 Mars, l'heure d'hiver le 25 Oct

    PS: Je dois faire ce travail la sur un intervalle d'un an sachant que mon intervalle peut comprendre deux année (2014-2015)
    Lorsque l'intervalle est à cheval sur deux année, il y a plus de conditions sur les heures d'hiver/été

    merci d'avance pour votre temps

  2. #2
    Nouveau Candidat au Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bon pour l'heure d'ete tout est okay! Mais supprimer ma ligne d'heure d'hiver... impossible
    Je m'arrache les cheveux

  3. #3
    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
    Que renvoie ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    any(date_base==hiver_start)
    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)

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci pour ton retour dut,

    j'obtiens 0. je sais pas si c'est logique puisque mon heure d'hiver figure bien dans ma liste de date. Par soucis de clarté je communique mon code entier que j ai ecrit depuis hier. je ne comprends pas pourquoi dans certains cas matlab me donne une erreur et dans d'autres cas non... J'ai toujours le meme soucis en utiliant la fonction any. J ai essayé de faire des recherches dessus mais je n'ai toujours rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
     
    function[Y]=Date_Prix(x1,y1,z1,u1,v1,w1,x2,y2,z2,u2,v2,w2,Price)
    %fonction qui me donne les bons prix en fonctions des changements d'heure
    %suivant l'intervalle choisi par l'utilisateur
    %l'utilisateur entre : x1année,y1 le mois, z1 le jour, u1 l'heure, v1
    %minute etc
    %Price est mon vecteur de prix qui vient d'excel (d'où le type
    %cell/utilisation de cell2mat
     
    date_base=Testance(x1,y1,z1,u1,v1,w1,x2,y2,z2,u2,v2,w2);%me donne toutes les dates de mon intervalle
     
    Pricecell=cell2mat(Price);
    taille=length(Pricecell);
    B=date_base(1:taille,1);
    date_prix_base=[B Pricecell];
    Date_fit=date_prix_base(:,1);%me sert à faire correspondre les bonnes dates
     
    DateVector_ete=[x1 y1 z1 u1 v1 w1]; 
    t1=datenum(DateVector_ete);%ma date de début
    DateVector_hiver=[x2 y2 z2 u2 v2 w2];
    t2=datenum(DateVector_hiver);%ma date de fin
     
    ete_start=changement_heure_ete(x1);
    ete_start_suiv=changement_heure_ete(x1)+datenum(0,0,0,1,0,0);
    hiver_start=changement_heure_Hiver1(x1);
    hiver_start_suiv=changement_heure_Hiver1(x1)+datenum(0,0,0,1,0,0);
    ete_end=changement_heure_ete(x2);
    hiver_end=changement_heure_Hiver1(x2); %fonctionne avec x1 mais pas x2?????
    ete_start_suiv2=changement_heure_ete(x2)+datenum(0,0,0,1,0,0);
    %hiver_start_suiv2=changement_heure_Hiver1(x2)+datenum(0,0,0,1,0,0);
     
    c=x2-x1; %différence entre les 2 années
     
     
    if c==0 
    %%%%%%%%%%%%Ajout heure ete %%%%%%%%%%%%
    A1=Date_fit(Date_fit<=ete_start);
    A2=Date_fit(Date_fit>=ete_start);
    date_avec_ete=[A1;ete_start;A2];
    limit1_ete=length(A1);
    limit2_ete=length(A1)+1;
    limite1prix=date_prix_base(1:limit1_ete,2);
    limite2prix=date_prix_base(limit2_ete:end,2);
     
    %%%%ajout date du prix ete 
    Ajout=date_prix_base(limit1_ete,2);
    prix_ajoute=[limite1prix;Ajout;limite2prix];
    %prix heure ete
    date_prix_ete=[date_avec_ete prix_ajoute];
     
    %%%%Retrait heure hiver
    %
     
    %%%%%%%%
    A3=Date_fit(Date_fit<hiver_start);
    A4=Date_fit(Date_fit>hiver_start);
    date_avec_hiver=[A3;A4];
    limite1_hiver=length(A3);
    limite2_hiver=length(A3)+2;
    limite1_hiverprix=date_prix_base(1:limite1_hiver,2);
    limite2_hiverprix=date_prix_base(limite2_hiver:end,2);
     
    %%%%%Retrait date hiver 
    %Retrait=date_prix_base(limit1_hiver,2);
    Prix_Retire=[limite1_hiverprix;limite2_hiverprix];
     
    %%%%Prix heure hiver
    date_prix_hiver=[date_avec_hiver Prix_Retire];
     
            if t1<=ete_start && t2<hiver_start
                    Y=date_prix_ete;
            elseif  t1>ete_start && t2<hiver_start
                    Y=[B Pricecell];
            elseif  t1>ete_start && t2>=hiver_start 
                    Y=date_prix_hiver;
            else 
                    Y_1=date_prix_ete(date_prix_ete<=hiver_start_suiv);
                    Y_2=date_prix_hiver(date_prix_hiver>hiver_start_suiv);
                    Y=[Y_1;Y_2];
     %les 2 cas de figures à envisager. etestart et hiverstart
    %Les valeurs se chevauchent... il faut couper  prix dates avoir le 
    %Le vecteurs avec les bonnes valeurs
            end
     
     
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                                  %%c==1%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
     
     
     
    elseif c==1 
    %%%%%%%%%%%%Ajout heure ete %%%%%%%%%%%%pourc===1
    A1x1=Date_fit(Date_fit<=ete_start);
    A2x1=Date_fit(Date_fit>=ete_start);
    A1x2=Date_fit(Date_fit<=ete_end);
    A2x2=Date_fit(Date_fit>=ete_end);
    date_avec_etex1=[A1x1;ete_start;A2x1];
    date_avec_etex2=[A1x2;ete_end;A2x2];
     
    limit1_etex1=length(A1x1);
    limit2_etex1=length(A1x1)+1;
    limit1_etex2=length(A1x2);
    limit2_etex2=length(A1x2)+1;
     
    limite1prixx1=date_prix_base(1:limit1_etex1,2);
    limite2prixx1=date_prix_base(limit2_etex1:end,2);
    limite1prixx2=date_prix_base(1:limit1_etex2,2);
    limite2prixx2=date_prix_base(limit2_etex2:end,2);
    %%%%ajout date du prix ete 
    Ajoutx1=date_prix_base(limit1_etex1,2);
    Ajoutx2=date_prix_base(limit1_etex2,2);
    prix_ajoutex1=[limite1prixx1;Ajoutx1;limite2prixx1];
    prix_ajoutex2=[limite1prixx2;Ajoutx2;limite2prixx2];
    %prix heure ete
    date_prix_etex1=[date_avec_etex1 prix_ajoutex1];
    date_prix_etex2=[date_avec_etex2 prix_ajoutex2];
     
    %%%%%%%%%%%%Ajout heure hiver %%%%%%%%%%%%pourc==1
    A3x1=Date_fit(Date_fit<hiver_start);
    A4x1=Date_fit(Date_fit>hiver_start);
    A3x2=Date_fit(Date_fit<hiver_end);
    A4x2=Date_fit(Date_fit>hiver_end);
     
    date_avec_hiverx1=[A3x1;A4x1];
    date_avec_hiverx2=[A3x2;A4x2];
     
    limite1_hiverx1=length(A3x1);
    limite2_hiverx1=length(A3x1)+2;
    limite1_hiverx2=length(A3x2);
    limite2_hiverx2=length(A3x2)+2;
     
    limite1_hiverprixx1=date_prix_base(1:limite1_hiverx1,2);
    limite2_hiverprixx1=date_prix_base(limite2_hiverx1:end,2);
    limite1_hiverprixx2=date_prix_base(1:limite1_hiverx2,2);
    limite2_hiverprixx2=date_prix_base(limite2_hiverx2:end,2);
     
    %%%%%Retrait date hiver 
    %Retrait=date_prix_base(limit1_hiver,2);
    Prix_Retirex1=[limite1_hiverprixx1;limite2_hiverprixx1];
    Prix_Retirex2=[limite1_hiverprixx2;limite2_hiverprixx2];
    %%%%Prix heure hiver
    date_prix_hiverx1=[date_avec_hiverx1 Prix_Retirex1];
    date_prix_hiverx2=[date_avec_hiverx2 Prix_Retirex2];
     
            if t1<=ete_start && t2>hiverstart && t2<ete_end
                %definir les bons Y1 Y2 pour trouver Y
                Y_1=date_prix_etex1(date_prix_etex1<=ete_start_suiv);
                Y_2=date_prix_hiverx1(date_prix_hiverx1>ete_start_suiv);
                Y=[Y_1;Y_2]; %ete_start hiver_start  
            elseif t1<=ete_start && t2>hiverstart && t2>=ete_end && t2<hiver_end
                %definir les bons Y1 Y2 et Y3 pour trouver Y
                Y_1=date_prix_etex1(date_prix_etex1<=ete_start_suiv);
                Y_2=date_prix_hiverx1(date_prix_hiverx1>ete_start_suiv |date_prix_hiverx1<=hiver_start_suiv );
                Y_3=date_prix_etex2(date_prix_etex2>hiver_start_suiv);
                Y=[Y_1;Y_2;Y_3];
                %ete_start hiver_start ete_end 
            elseif  t1>ete_start && t1<=hiver_start && t2>=ete_end && t2<hiver_end
                  %hiver_start et ete_end
             elseif t1>ete_start && t1<=hiver_start && t2>=hiver_end 
                Y_1=date_prix_hiverx1(date_prix_hiverx1<=hiver_start_suiv);
                Y_2=date_prix_etex2(date_prix_etex2>hiver_start_suiv |date_prix_etex2<=ete_start_suiv2 );
                Y_3=date_prix_hiverx2(date_prix_hiverx2>ete_start_suiv2);
                Y=[Y_1;Y_2;Y_3];
                %hiverstart ete_end hiver_end
            elseif t1>ete_start && t1<=hiver_start && t2<ete_end
                Y=date_prix_hiverx1;  %hiverstart
            elseif t1>hiver_start && t1<ete_end && t2>=ete_end && t2<hiver_end
                Y=date_prix_etex2;    %eteend
            elseif t1>hiver_start && t1<ete_end && t2>=hiver_end
                Y_1=date_prix_etex2(date_prix_etex2<=ete_start_suiv2);
                Y_2=date_prix_hiverx2(date_prix_hiverx2>ete_start_suiv2);
                Y=[Y_1;Y_2];
                %Y=[date_prix_etex2;date_prix_hiverx2];    
                %ete_end et hiver_end
            else
                Y=[B Pricecell];
            end
    else
                Y=dip('Revoir les paramètres d entree');
    end
     
    end
    merci à tous

  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 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
    Tu trouveras la solution à ton problème dans la FAQ : Pourquoi 0.3-0.2-0.1 est-il différent de 0 ?
    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)

  6. #6
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 881
    Points : 3 429
    Points
    3 429
    Par défaut
    salut

    dans ces cas là, j'écris souvent ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    idx = find(date_base>=hiver_start,1,'first');;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    idx = find(date_base<=hiver_start,1,'last');
    en fonction de ce que tu veux en faire par la suite

    Fabien

Discussions similaires

  1. Gestion des heures d'été/hiver
    Par ccaye dans le forum SQL
    Réponses: 4
    Dernier message: 07/10/2008, 17h34
  2. Gestion de l'heure sur Catalys 4500
    Par bbkenny dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 24/04/2008, 13h18
  3. Gestion des plans d'actions avec requête ajout
    Par 512banque dans le forum Modélisation
    Réponses: 3
    Dernier message: 08/01/2008, 09h58
  4. Réponses: 2
    Dernier message: 30/03/2007, 18h17
  5. Réponses: 3
    Dernier message: 13/08/2004, 19h52

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