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 |
Partager