Bonjour,
C=weekday(B); te renvoie un vecteur d'autant de données que B, et vérifier if C==1 && C==7 revient à vérifier : si tous les jours sont des samedis ET des dimanches.
Déjà à la fois samedi et dimanche est impossible, et toi tu veux les données à la fois de la semaine et du week-end pour effectuer différents calculs et non pas l'une ou l'autre série de données. Ta structure de if/else/end actuelle n'est donc pas non plus bonne.
On va commencer par séparer les données semaine / week-end :
un jour de week-end est un samedi OU un dimanche => durant_week_end = C==1 | C==7;.
durant_week_end est ici un vecteur logique de même taille que C avec des valeurs vraies "1" lorsque les jours correspondants sont des samedis ou dimanches, et "0" pour des jours de semaine.
Il nous reste à déterminer si les données sont entre 8h du matin et 20h ou non. Nous pouvons procéder avec datevec qui va récupérer les heures comme ceci :
[~, ~, ~, heures, ~, ~] = datevec( Date_Prix(:,1) );
Puis de la même façon que durant_week_end, avoir un vecteur logique ayant des valeurs vraies pour des heures dans cet intervalle :
entre_8h_20h = 8<=heures & heures<=20;
Maintenant nous pouvons combiner ces deux vecteurs logiques pour avoir les données que nous voulons : ceci en utilisant l'indexage logique :
1 2 3 4
| D_week_end_entre_8h_20h = Date_Prix( durant_week_end & entre_8h_20h, 2);
D_semaine_entre_8h_20h = Date_Prix(~durant_week_end & entre_8h_20h, 2);
D_week_end_entre_20h_8h = Date_Prix( durant_week_end & ~entre_8h_20h, 2);
D_semaine_entre_20h_8h = Date_Prix(~durant_week_end & ~entre_8h_20h, 2); |
Partager