Bonjour à tous,
Je suis en dernière année d'école d'ingénieur en science des matériaux. Je travaille actuellement sur l'inhibition de la corrosion sur les armatures de béton précontraint. J'effectue des mesures électrochimiques couplées à des enregistrements de signaux acoustiques tout au long des mesures. Le but est d'analyser les processus intervenant dans les phénomènes de corrosion. Chaque signal peut-être relié a une étape clé de la corrosion (amorçage, propagation, etc.). Je cherche donc à corréler chaque signal entre eux et à dégager un tendance sur un graphique selon deux paramètres (exemple : l'énergie du signal et sa fréquence moyenne).
Ces signaux sont filtrés par mes soins. J'obtiens finalement un fichier excel (voir pièce jointe "Recap_salves.xlsx") recensant chaque signal avec ses différents paramètres (énergie, temps de montée, fréquence moyenne, etc.). Je souhaite traiter ces signaux par le biais de Matlab et notamment par la méthode en analyse composante principale.
J'ai déjà effectué un programme "brouillon" mais n'étant pas sûr et n'ayant pas de résultats prometteurs je souhaiterai vous partager mon code afin d'en discuter et de l'améliorer.
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 function ACP_EA () Donnees = xlsread('Recap_salves.xlsx','Data1','a2:s966'); NumSig = Donnees(:,19); Rise = Donnees(:,6); Count = Donnees(:,7); Energy = Donnees(:,8); Duration = Donnees(:,9); Amplitude = Donnees(:,10); Freq = Donnees(:,11); Variables = [Rise Count Energy Duration Amplitude Freq]; Donnees=Donnees(:,6:11); [vect_propres,scores,val_propres,t2] = princomp(zscore(Donnees)); figure('Name','NumSig','NumberTitle','off'); plot(scores(:,1),scores(:,2),'r+'); text(scores(:,1),scores(:,2),NumSig); a = axis; xl = a(1);xu = a(2);yl = a(3);yu = a(4); xlabel('Amplitude') ylabel('Rise') hold on line([xl xu],[0 0]) line([0 0],[yl yu]) [ATTACH]225401[/ATTACH] figure('Name','Variables','NumberTitle','off'); plot(vect_propres(:,1),vect_propres(:,2),'.'); text(vect_propres(:,1),vect_propres(:,2),Variables); hold on [x,y,z] = cylinder(1,200); plot(x(1,:),y(1,:)) hold on line([-1 1],[0 0]) line([0 0],[-1 1]) axis equal
Je vous remercie par avance :-)
Guillaume R
Partager