Bonjour !

Je vais commencer par vous présenter mon programme avant de vous poser ma question.

J'ai à la base X fichiers .txt que je vais trier et classer dans un tableau X*5 sur matlab. Ensuite je l'envoi un fichier Excel.
J'ai créer une boucle for qui tourne de 1 jusqu'au nombre de fichiers .txt.

Je souhaiterai dans cette boucle for ou en dehors ajouter, tous les multiples de 3, les 3 lignes de mon tableau :
En gros ajouter les 3 premières lignes, ensuite ajouter les lignes 4,5 et 6, ensuite ajouter les lignes 7,8 et 9 etc... Pour au final avoir N/3 lignes dans mon tableau final !
Il faut savoir que le nombre de fichiers .txt est forcément un multiple de 3 !

J'espère avoir été assez clair !

Voici ma boucle n :

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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
for n=1:numel(list)
    filename=list(n).name;
    fid=fopen(filename,'r');
    data = strrep(fread(fid, [1 inf], '*char'), ',', '.'); %Remplace tous les ',' par des '.' dans le "fread"
    fclose(fid);
    T = textscan(data,'%f%f%f%f%f%f%f', 'CollectOutput', 1);
    % t=zeros(length(T{n}(5:end,1)),n);
    % t(:,n)=0:1:length(T{n}(5:end,1))-1;
    % t=t';
    for i=5:1:7
        Tmp=T{1}(5:end,i);
        [A(n,i) B(n,i)]=max(Tmp);
        y(n,i)=max(max(T{1}(5:end,i))).*0.1;
        P1(n,i)=find(Tmp(B(n,i)+1:end)<y(n,i),1,'first');
        P2(n,i)=find(Tmp(1:B(n,i))<y(n,i),1,'last');
        ENERGIE(n,i)=trapz(Tmp(P2(n,i):P1(n,i)+B(n,i)));
        RMS(n,i-4)=sqrt(mean(T{1}(P2(n,i):P1(n,i)+B(n,i),i-4).^2));
        La(n,i-4)=20*log10(RMS(n,i-4)/10^-6);
        Lv(n,i-4)=20*log10(RMS(n,i-4)/10^-9);
    end
    La(n,4:7)=0;
    Lv(n,4:7)=0;
    EFFORTT(n)=max(T{1}(5:end,4));
    EFFORTT=EFFORTT';
    DONNEE(n,:)=[mean(Lv(n,1:3)),mean(La(n,1:3)),mean(A(n,5:7)),mean(ENERGIE(n,5:7)),EFFORTT(n)];
 
    %Suite du fichier Excel avec des valeurs qui évoluent avec la boucle n
    [pathstr, name, ext]=fileparts(filename);
    range = sprintf('%c%d','A'+0,4+n);
    range2 = sprintf('%c%d:%c%d','A'+1,5,'A'+5,4+n);
    Excel.Worksheets.Item(1).Range(range).Value=name;
    Excel.Worksheets.Item(1).Range(range2).Value=DONNEE;
 
    x1=DONNEE(1:end,2);
    x2=DONNEE(1:end,3);
    if (exist('L')==1)
        if L==1
            FFLHeavyTwillBPI=readfis('FFLHeavyTwillBPI');
            R=evalfis([x1,x2],FFLHeavyTwillBPI);
            if R(n)>6
                if isnan(Excel.Worksheets.Item(3).Range('A2').Value)
                    range61 = Excel.Worksheets.Item(3).Range('A2');
                else
                    range61 = Excel.Worksheets.Item(3).Range('A1').End('xlDown').get('Offset', 1, 0);
                end
                range61.Value=name;
            elseif R(n)<4.41
                if isnan(Excel.Worksheets.Item(3).Range('C2').Value)
                    range63 = Excel.Worksheets.Item(3).Range('C2');
                else
                    range63 = Excel.Worksheets.Item(3).Range('C1').End('xlDown').get('Offset', 1, 0);
                end
                range63.Value=name;
            else
                if isnan(Excel.Worksheets.Item(3).Range('B2').Value)
                    range62 = Excel.Worksheets.Item(3).Range('B2');
                else
                    range62 = Excel.Worksheets.Item(3).Range('B1').End('xlDown').get('Offset', 1, 0);
                end
                range62.Value=name;
            end
        elseif L==2
        elseif L==3
        end
    elseif (exist('M')==1)
        if M==1
        elseif M==2
        elseif M==3
        end
    elseif (exist('N')==1)
        if N==1
        elseif N==2
        elseif N==3
        end
    elseif K==4
        FFLFacoH=readfis('FFLFacoH');
        R=evalfis([x1,x2],FFLFacoH);
        if R(n)>6
            if isnan(Excel.Worksheets.Item(3).Range('A2').Value)
                range61 = Excel.Worksheets.Item(3).Range('A2');
            else
                range61 = Excel.Worksheets.Item(3).Range('A1').End('xlDown').get('Offset', 1, 0);
            end
            range61.Value=name;
        elseif R(n)<4.11
            if isnan(Excel.Worksheets.Item(3).Range('C2').Value)
                range63 = Excel.Worksheets.Item(3).Range('C2');
            else
                range63 = Excel.Worksheets.Item(3).Range('C1').End('xlDown').get('Offset', 1, 0);
            end
            range63.Value=name;
        else
            if isnan(Excel.Worksheets.Item(3).Range('B2').Value)
                range62 = Excel.Worksheets.Item(3).Range('B2');
            else
                range62 = Excel.Worksheets.Item(3).Range('B1').End('xlDown').get('Offset', 1, 0);
            end
            range62.Value=name;
        end
    end
end

Je pense que j'aurai d'autres questions après concernant le trie lorsque je transmet les données sur Excel.

Merci !