Bonjour,
Je suis en train de réaliser une fonction qui va m'être utile dans mon projet. Cependant il se trouve que cette fonction est relativement la même dans toutes les situations, à la différence que le nombre de paramètres doit varier.
Voici deux exemples : reflux_3, reflux_4
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 function [Dref, Fref]=reflux_3(evenements_inter_Im123_liquide,evenements_Imp1_liquide,evenements_Imp2_liquide,evenements_Imp3_liquide) nbreflux=0; for i=1:size(evenements_inter_Im123_liquide,1) %Pour déterminer les reflux entre 3 pistes, on procède comme suit %: on a déterminé dans etude_de_courbe les événements commun à 3 %pistes par domaine. On cherche alors, dans un domaine donné et selon %la piste l'ensemble des événements communs aux trois pistes i.e. leur %début et fin que l'on stocke dans les DDI et FFI. Il n'y a alors %reflux que si le début d'un événement commun sur la piste 3 est avant %2 lui-même avant 1 ce qui se traduit physiquement par une %"montée" depuis 3 vers 1. X1=find(evenements_Imp1_liquide(:,1)<= evenements_inter_Im123_liquide(i,1)); D1=X1(end); DD1=evenements_Imp1_liquide(D1,1); FF1=evenements_Imp1_liquide(D1,2); X2=find(evenements_Imp2_liquide(:,1)<= evenements_inter_Im123_liquide(i,1)); D2=X2(end); DD2=evenements_Imp2_liquide(D2,1); FF2=evenements_Imp2_liquide(D2,2); X3=find(evenements_Imp3_liquide(:,1)<= evenements_inter_Im123_liquide(i,1)); D3=X3(end); DD3=evenements_Imp3_liquide(D3,1); FF3=evenements_Imp3_liquide(D3,2); if((DD3>=DD2) & (DD2>=DD1)) nbreflux=nbreflux+1; Dref(nbreflux,1)=DD1; Dref(nbreflux,2)=DD2; Dref(nbreflux,3)=DD3; Fref(nbreflux,1)=FF1; Fref(nbreflux,2)=FF2; Fref(nbreflux,3)=FF3; end clear X1 D1 DD1 FF1 D2 DD2 FF2 X3 D3 DD3 FF3 end Dref; Fref;Comme vous le voyez le fonctionnement est strictement le même sauf que dans reflux_4 je considère un vecteur en plus. J'ai de même écrit reflux_5 et reflux_6. Ce que je voudrais en fait c'est n'avoir qu'une seule fonction dont le nombre de paramètres est variables et qui réalise le travail ci-dessus, est-ce possible ? Au maximum, avec reflux_6, j'aurais 7 paramètres.
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 function [Dref, Fref]=reflux_4(evenements_inter_Im1234_liquide,evenements_Imp1_liquide,evenements_Imp2_liquide,evenements_Imp3_liquide,evenements_Imp4_liquide) nbreflux=0; for i=1:size(evenements_inter_Im1234_liquide,1) %Pour déterminer les reflux entre 4 pistes. X1=find(evenements_Imp1_liquide(:,1)<= evenements_inter_Im1234_liquide(i,1)); D1=X1(end); DD1=evenements_Imp1_liquide(D1,1); FF1=evenements_Imp1_liquide(D1,2); X2=find(evenements_Imp2_liquide(:,1)<= evenements_inter_Im1234_liquide(i,1)); D2=X2(end); DD2=evenements_Imp2_liquide(D2,1); FF2=evenements_Imp2_liquide(D2,2); X3=find(evenements_Imp3_liquide(:,1)<= evenements_inter_Im1234_liquide(i,1)); D3=X3(end); DD3=evenements_Imp3_liquide(D3,1); FF3=evenements_Imp3_liquide(D3,2); X4=find(evenements_Imp4_liquide(:,1)<= evenements_inter_Im1234_liquide(i,1)); D4=X4(end); DD4=evenements_Imp4_liquide(D4,1); FF4=evenements_Imp4_liquide(D4,2); if((DD4>=DD3) & (DD3>=DD2) & (DD2>=DD1)) nbreflux=nbreflux+1; Dref(nbreflux,1)=DD1; Dref(nbreflux,2)=DD2; Dref(nbreflux,3)=DD3; Dref(nbreflux,4)=DD4; Fref(nbreflux,1)=FF1; Fref(nbreflux,2)=FF2; Fref(nbreflux,3)=FF3; Fref(nbreflux,4)=FF4; end clear X1 D1 DD1 FF1 D2 DD2 FF2 X3 D3 DD3 FF3 X4 D4 DD4 FF4 end Dref; Fref;
Partager