Bonjour à tous et à toutes,

Voici un petit code Matlab permettant de récupérer des infos de fichiers matlab et de les restituer dans Excel.
Aujourd'hui, il y a environ une centaine de fichier matlab à "éplucher" et le code mets donc beaucoup de temps à s'éxécuter (entre 15 et 20 minutes).
Je voulais donc savoir si :

1 - C'est juste mon ordi qui est lent ?
2 - Il y a des optimisation dans le code que je pourrais effectuer pour accélerer un peu le processus ?

J'ai vu sur le site de Matlab que la fonction xlswrite est "déconseillée" mais je n'ai pas bien compris comment la remplacer par autre chose, ni même si la lenteur du programme peut venir de là.

Merci d'avoir pris le temps de lire.
Si vous avez besoin de précisions sur mon sujet, n'hésitez pas à demander.



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
75
76
77
78
79
80
81
82
83
84
85
86
87
rep = 'C:\Code\';
 
lst_fic = dir([rep '\Synthese*.mat']);
 
% on parcourt tous les fichiers .mat contenus dans le dossier
for ii = 1 : length(lst_fic)
    fic = lst_fic(ii).name;
 
    % Chargement du fichier .mat
    load([rep fic]);
 
   % Récupération des mesures dans le fichier .mat
 
    maxBA1 = max (abs((MODELE_passe{1,1}.BA{1,1}.Estimees)));
    maxBA2 = max (abs((MODELE_passe{1,1}.BA{1,2}.Estimees)));
    maxBA3 = max (abs((MODELE_passe{1,1}.BA{1,3}.Estimees)));
 
    indice1  = find(abs((MODELE_passe{1,1}.BA{1,1}.Estimees))==(maxBA1));
    indice2  = find(abs((MODELE_passe{1,1}.BA{1,2}.Estimees))==(maxBA2));
    indice3  = find(abs((MODELE_passe{1,1}.BA{1,3}.Estimees))==(maxBA3));
 
    M1 = (MODELE_passe{1,1}.BA{1,1}.Temperature);
    M2 = (MODELE_passe{1,1}.BA{1,2}.Temperature);
    M3 = (MODELE_passe{1,1}.BA{1,3}.Temperature);
 
    tempmaxBA1 = M1(indice1,:);
    tempmaxBA2 = M2(indice2,:);
    tempmaxBA3 = M3(indice3,:);
 
     maxKA1 = max (abs((MODELE_passe{1,1}.KA{1,1}.Estimees)));
     maxKA2 = max (abs((MODELE_passe{1,1}.KA{1,2}.Estimees)));
     maxKA3 = max (abs((MODELE_passe{1,1}.KA{1,3}.Estimees)));    
 
     indice4  = find(abs((MODELE_passe{1,1}.KA{1,1}.Estimees))==maxKA1);
     indice5  = find(abs((MODELE_passe{1,1}.KA{1,2}.Estimees))==maxKA2);
     indice6  = find(abs((MODELE_passe{1,1}.KA{1,3}.Estimees))==maxKA3);
 
     M4 = (MODELE_passe{1,1}.KA{1,1}.Temperature);
     M5 = (MODELE_passe{1,1}.KA{1,2}.Temperature);
     M6 = (MODELE_passe{1,1}.KA{1,3}.Temperature);
 
     tempmaxKA1 = M4(indice4,:);
     tempmaxKA2 = M5(indice5,:);
     tempmaxKA3 = M6(indice6,:);
 
 
     maxDG1 = max(abs((MODELE_passe{1,1}.DG{1,1}.Estimees)));
     maxDG2 = max(abs((MODELE_passe{1,1}.DG{1,2}.Estimees)));
     maxDG3 = max(abs((MODELE_passe{1,1}.DG{1,3}.Estimees)));
 
     indice7  = find(max(abs((MODELE_passe{1,1}.DG{1,1}.Estimees))==maxDG1));
     indice8  = find(max(abs((MODELE_passe{1,1}.DG{1,2}.Estimees))==maxDG2));
     indice9  = find(max(abs((MODELE_passe{1,1}.DG{1,3}.Estimees))==maxDG3));
 
     M7 = (MODELE_passe{1,1}.DG{1,1}.Temperature);
     M8 = (MODELE_passe{1,1}.DG{1,2}.Temperature);
     M9 = (MODELE_passe{1,1}.DG{1,3}.Temperature);
 
     tempmaxDG1 = M7(indice7,:);
     tempmaxDG2 = M8(indice8,:);
     tempmaxDG3 = M9(indice9,:);    
 
%    création des range dans lesquelles ont va mettre les valeurs dans le classeur Excel
 
    my_cell1 = sprintf( 'A%s',num2str(ii) );
    my_cell2 = sprintf( 'D%s',num2str(ii) );
    my_cell3 = sprintf( 'G%s',num2str(ii) );
    my_cell4 = sprintf( 'J%s',num2str(ii) );
    my_cell5 = sprintf( 'M%s',num2str(ii) );
    my_cell6 = sprintf( 'P%s',num2str(ii) );
    my_cell7 = sprintf( 'S%s',num2str(ii) );
    my_cell8 = sprintf( 'V%s',num2str(ii) );
    my_cell9 = sprintf( 'Y%s',num2str(ii) );    
 
    % édition du classeur resultat1 pré-existant dans le répertoire
 
    xlswrite('resultat1.xls', {maxBA1,tempmaxBA1},1,my_cell1);
    xlswrite('resultat1.xls', {maxBA2,tempmaxBA2},1,my_cell2);
    xlswrite('resultat1.xls', {maxBA3,tempmaxBA3},1,my_cell3);
    xlswrite('resultat1.xls', {maxKA1,tempmaxKA1},1,my_cell4);
    xlswrite('resultat1.xls', {maxKA2,tempmaxKA2},1,my_cell5);
    xlswrite('resultat1.xls', {maxKA3,tempmaxKA3},1,my_cell6);
    xlswrite('resultat1.xls', {maxDG1,tempmaxDG1},1,my_cell7);
    xlswrite('resultat1.xls', {maxDG2,tempmaxDG2},1,my_cell8);
    xlswrite('resultat1.xls', {maxDG3,tempmaxDG3},1,my_cell9);    
 
end