]> AND Private Git Repository - cours-mesi.git/blob - tel/TPmatlab/integration/TP3c/visu_integ.m
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / integration / TP3c / visu_integ.m
1 function visu_integ(X,Z,ind_int_nulle)\r
2 % fonction qui visualise la recherche de période d'une fonction\r
3 % sinusoidale par calcul d'intégrale.\r
4 %\r
5 % variables d'entrée\r
6 % X et Z désignent respectivement abscisses et ordonnées\r
7 % des points représentatifs de la fonction traitée.\r
8 % ind_int_nulle désigne l'indice du vecteur X pour lequel\r
9 % l'intégrale nulle est atteinte.\r
10 % Autrement dit, la période est X(ind_int_nulle)-X(1).\r
11 % Cet indice est produit par determin_periode.\r
12 % La fonction visu_integ produit des images\r
13 % qu'on pourra bien sur capter.\r
14 \r
15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
16 %                       Fonctions connexes appelées\r
17 % simpson,\r
18 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
19 \r
20 % Tests d'entrée\r
21 if nargin~=3\r
22     error('Nombre de champs incorrect');\r
23 end\r
24 if sum(size(X)~=size(Z))>0\r
25     error('Champs incorrects. Voir controle des champs.');\r
26 end\r
27 \r
28 global etendue\r
29 % Voir remarques dans gener_signal ou demo_tp3C\r
30 \r
31 % paramètres généraux\r
32 lgr=size(X,2);\r
33 pas_X=X(2)-X(1);\r
34 \r
35 % calibrages\r
36 \r
37 % pour les fenetres 1 et 2.\r
38 ampl1=etendue*max(Z);\r
39 lim1=[X(1) X(lgr) -ampl1 ampl1];\r
40 \r
41 % outil intermédiaire : calcul de l'intégrale sur une demi-période\r
42 % détermination du deuxième changement de signe de Z.\r
43 % Peut etre remplacé par un passage de ces données issues\r
44 % de determin_periode, ce qui éviterait leur calcul ici.\r
45 positifs=(Z>=0);\r
46 chgt=find(diff(positifs));\r
47 \r
48 ampl3=etendue*...\r
49     abs(simpson(pas_X,Z,chgt(1),chgt(2)+mod(chgt(2)-chgt(1),2)));\r
50 lim3=[-ampl3 ampl3 -3 4];\r
51 \r
52 \r
53 % tracé du signal brut\r
54 subplot(3,1,1);\r
55 plot(X,Z);\r
56 axis(lim1);\r
57 legend('Signal acquis',0);\r
58 \r
59 % tracé de l'intégrale en cours de calcul\r
60 \r
61 % choix de la finesse de découpe de l'intégrale à calculer\r
62 % à modifier éventuellement.\r
63 nb_iterations=50; unite=10/nb_iterations;\r
64 pas=floor((lgr-chgt(2))/nb_iterations);\r
65 \r
66 % initialisation pour la deuxième fenetre\r
67 subplot(3,1,2);\r
68 title('Evolution de l''intégrale du signal');\r
69 deb=1;fin=chgt(2)+mod(chgt(2)-deb,2);\r
70 area(X(deb:fin),Z(deb:fin));\r
71 axis(lim1);\r
72 hold on;\r
73 \r
74 % initialisation de la troisieme fenetre\r
75 h_3=subplot(3,1,3);\r
76 set(h_3,'YTick',[]);\r
77 title('Evolution de la valeur de l''intégrale');\r
78 integ0=simpson(pas_X,Z,deb,fin);\r
79 area([0 integ0],[1 1]);axis(lim3);\r
80 pause(0.5);\r
81 hold on;\r
82 \r
83 % initialisations avant boucle\r
84 deb=fin;fin=deb+pas+mod(pas,2);\r
85 ajout=simpson(pas_X,Z,deb,fin);\r
86 integ=integ0+ajout;\r
87 \r
88 while integ*integ0>=0\r
89     \r
90     % visualisation de l'intégrale en cours de calcul\r
91     rx2=X(deb:fin);rz2=Z(deb:fin);\r
92     subplot(3,1,2);\r
93     title('Evolution de l''intégrale du signal');\r
94     area(rx2,rz2);axis(lim1);\r
95     hold on;\r
96     \r
97     % visualisation de la valeur de l'intégrale\r
98     h_3=subplot(3,1,3);\r
99     set(h_3,'YTick',[]);\r
100     title('Evolution de la valeur de l''intégrale');\r
101     cla;\r
102     area([0 integ],[1 1]);axis(lim3);\r
103     \r
104     % préparation de boucle suivante\r
105     pause(unite);\r
106     deb=fin;fin=deb+pas+mod(pas,2);\r
107     ajout=simpson(pas_X,Z,deb,fin);\r
108     integ=integ+ajout;\r
109     \r
110     % traitement particulier de fin de boucle\r
111     if fin>ind_int_nulle\r
112         \r
113         % fenetre 2 finale\r
114         rx2=X(1:ind_int_nulle);rz2=Z(1:ind_int_nulle);\r
115         subplot(3,1,2);\r
116         title('Evolution de l''intégrale du signal');\r
117         cla;\r
118         area(rx2,rz2);axis(lim1);\r
119         % fenetre 3 finale\r
120         h_3=subplot(3,1,3);\r
121         set(h_3,'YTick',[]);\r
122         title('Evolution de la valeur de l''intégrale');\r
123         cla;\r
124         area([0 ampl3/100],[1 1]);axis(lim3);\r
125     end\r
126         \r
127 end\r