IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Ecrire sur Excel tout les multiple de 3


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 85
    Par défaut Ecrire sur Excel tout les multiple de 3
    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 !

  2. #2
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Par défaut
    Salut,
    je ne suis pas sûr de bien comprendre où tu bloques, mais voici quelque éléments de réponse pouvant t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    %boucle de 3 en 3
    for i=1:3:31
     %...
    end
    %pour ne faire quelque chose qu'une fois sur 3 dans une boucle
    for i=1:90
     if(mod(i,3)==0)
     %...
     end
    end

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 85
    Par défaut
    Merci!
    J'avais trouvé quelque chose de similaire et j'y suis arrivé !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Proc Import sur Excel : ignorer les formats Excel
    Par Bunzy dans le forum SAS Base
    Réponses: 4
    Dernier message: 03/02/2012, 15h01
  2. Réponses: 5
    Dernier message: 23/08/2010, 10h52
  3. [XL-2010] Question sur Excel et les "Array-Entered Formulas" avec accolades
    Par balteo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/08/2010, 19h33
  4. trier des données sur excel via les MFC
    Par craryb dans le forum MFC
    Réponses: 1
    Dernier message: 22/03/2007, 14h51
  5. VBA sur excel tout simple
    Par JohnFidgeral dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/01/2007, 18h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo