Bonjour,
j'ai créé une boucle de calcul:
6 fichiers XYZ présents dans un dossier sont chargés (un par un), 6 calculs sont fait sur la base de ces 6 fichiers, 1 calcul pour chaque fichier chargé.
Et donc 6 résultats différents.
Ma boucle s'exécute donc 6 fois.
Maintenant je voudrais que les résultats (résultats statistiques MIN, MAX, MOY) soient concaténés dans une seule et même matrice.
Malheureusement je n'y parviens pas.
2 choses que j'essaie donc de coder:
a) A chaque boucle je voudrais créer une matrice (1 ligne x 4 colonnes) contenant 4 colonnes contenant : 1.le nom du fichier XYZ importé au début de la boucle, 2.MIN des résultats, 3.MAX, 4.MOY)
Sur le code ci-dessous, j'essaie de faire une matrice "data.result_line" qui regroupe les variables : nom du fichier XYZ actuellement chargé dans la boucle, l'écart type, la moyenne, le min, le max.
Apparemment cela ne fonctionne pas, le résultat est une matrice 1x1 qui contient uniquement la première variable : nom du fichier XYZ actuellement chargé.
b) Je voudrais qu'à la fin de chaque boucle, une matrice récupère cette matrice (1x4). Mais je veux pas que les matrices résultant des 6 boucles s'écrasent les unes après les autres (et ne reste plus que la dernière à la fin).
Je veux que les 6 lignes de résultats se suivent dans une seule et même matrice.
Au final j'aurais une matrice de 6 lignes et 4 colonnes (1 ligne supplémentaire par boucle effectuée).
Merci d'avance pour votre aide.
voici le code:
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
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 function import_plan(objet,event) data=guidata(gcbf); plan_load = uigetfile('*','Importer 3 pts du plan'); fid = fopen(plan_load,'r'); plan_import = textscan(fid,'%*s %f %f %f %f %f %f %f %f %f','delimiter',',','headerLines',0); fclose(fid); for i=1:size(plan_import,2) data.plan(:,i) = plan_import{1,i}(:,1); end guidata(gcbf,data) function import_nuage(objet,event) data=guidata(gcbf); cd C:\MATLAB\points str = dir('*.xyz'); %boucle qui permet de traiter chaque fichier un après l'autre %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for k = 1:length(str) str_actuel = str(k).name; str_eval = ['load ', str_actuel]; eval(str_eval); %Calculs %%%%%%%%% P1 = [data.plan(1,1),data.plan(1,2),data.plan(1,3)] P2 = [data.plan(1,4),data.plan(1,5),data.plan(1,6)] P3 = [data.plan(1,7),data.plan(1,8),data.plan(1,9)] H = load(str_actuel); % 1)Calculer le vecteur normal: N = cross(P1-P2, P1-P3); % 2)Extraire les valeurs a, b et c a=N(1,1) ; b=N(1,2) ; c=N(1,3); % 3)Calculer la valeur d d = -(a*P1(1,1)+b*P1(1,2)+c*P1(1,3)); % 4)Calculer la distance/ecart entre le point H et le plan P [P1,P2,P3] data.e = ((a*H(:,1)+b*H(:,2)+c*H(:,3)+d))/sqrt(a^2+b^2+c^2); % 5)Calcul des éléments STATISTIQUES data.maximum = max(data.e); data.minimum = min(data.e); data.moyenne = mean(data.e); data.ecart_type = std(data.e); % Création d'une matrice qui synthétise les résultats %%%%%%%%% data.result_line = [ str_actuel data.moyenne data.ecart_type data.maximum data.minimum]; end; guidata(gcbf,data);
Partager