optimisation de programme sous matlab
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

optimisation de programme sous matlab



  1. #1
    soldius87

    optimisation de programme sous matlab


    ------

    bonjour a tous.
    voila dans le cadre de mon stage j'ai ecrit un programme matlab pour faire un traitement de signal sur des données issue d'un capteur (en fait il ny a la que la premiere partie, la 2 eme etant une fonction).
    jusqu'a la tous marche trés bien (le programme fonctionne), le probleme c le temps d'excution du programme qui est trop long (prés de 10 minutes) pour seulement 8 million de donnée (dans le cas réel je disposerai d'un fichier de 180 million de données).
    si quelqu'un pouvait m'aider a optimiser mon code , cela m'aiderai beaucoup.
    merci infiniment
    Code:
    clear all
    close all
    X1=[];
    Z2=[];
    EXTRACT_prev=[];
    EXTRACT_next=[];
    X=importdata('MOCA_1_20120305_193217.txt');
    X2=X(4:end);
    % Première étape extraction entre 2 trigger
    Y=find(X2>10);%  Y contient les  indices des données sup a 10 
    Z=diff(Y);% Z contient la derivée de Y
    W=find(Z>800);% W contient l'indice de trigger, permet de connaitre la position de mes trigger
    %A=X(Y(W(1)):Y(W(1))+Z(W(1)));
    % la boucle permet faire un decoupage du signal (ne gardet que les information contenue entre chaque trigger)
        MINI=min(Z(W(:))-1);
    for i=1:length(W)-1
        TRAIT=X2(Y(W(i))+1:Y(W(i))+Z(W(i)));
        if length(TRAIT)>=MINI
        X1(i,:)=TRAIT(1:MINI);
        Z2(i,:)=diff(X1(i,:));
        [val(i),W2_max(i)]=max(Z2(i,10:end));
        [val(i),W2_min(i)]=min(Z2(i,10:end));
        end
    end
    % extraction de l'information utile
    % recuperation de l'information utile a l'aide de 2 variable l'une
    % represent l'etat passé et l'autre l'etat present 
    %long=min(W2_min-W2_max);
    for j=2:length(W2_min)
       EXTRACT_next=X1(j,W2_max(j)+11:8+(W2_min(j))); % etat present
       EXTRACT_prev=X1(j-1,W2_max(j-1)+11:8+(W2_min(j-1))); %etat future
       %tout la partie suivante est facultative, il permet simplement de faire
       %une previsualisation des signaux
       subplot(3,1,1)
       cla; % effacement des axes
       %set(gca,'Nextplot','replace');
        plot(X1(j,:),'b')
        hold on
        plot((W2_max(j)+11:8+(W2_min(j))),EXTRACT_next,'r')
        subplot(3,1,2)
        cla;
          %set(gca,'Nextplot','replace');
        plot(X1(j-1,:),'b')
        hold on
        plot((W2_max(j-1)+11:8+(W2_min(j-1))),EXTRACT_prev,'r')
        subplot(3,1,3)
        cla;
        %set(gca,'Nextplot','replace');
        plot(EXTRACT_next,'r')
        hold on
        plot(EXTRACT_prev,'b')
        pause(0.05);                                                
    end
    ps: mon fichier de donner fé 57 mo , donc je ne peut pas l'uploader sur le forum, si quelqu'un on a besion il peut me contacter par message privé.

    -----

  2. #2
    zoup1

    Re : optimisation de programme sous matlab

    Bonjour,
    Dans un programme Matlab, il faut absolument proscrire l'utilisation des boucles. Matlab est fait pour travailler avec des vecteurs, il le fait bien.
    Je n'ai pas la patience de regarder en détail ce que tu fais, mais la première boucle par exemple avec le commentaire
    % la boucle permet faire un découpage du signal (ne garder que les informations contenues entre chaque trigger)
    me semble inutile et peut parfaitement être faite uniquement avec des opération matricielles.
    Cordialement,

    Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.

  3. #3
    lou_ibmix_xi

    Re : optimisation de programme sous matlab

    une autre piste pourrait être de lire le fichier de données morceaux par morceaux. En effet, si tu as trop de donées en RAM, tu risques de "swapper": le système utilisera le disque dur à la place de la RAM, et du coup tout devient très lent... Regarde si "importdata" te permet de lire un nb fixe de données en commençant à un indice précis.

  4. #4
    soldius87

    Re : optimisation de programme sous matlab

    merci a toi, je vais voir ce que je peut faire

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Programme sous matlab
    Par invite7e1902b9 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 15/02/2012, 10h00
  2. programme sous matlab
    Par invitef3eab0af dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 19/07/2011, 18h26
  3. Optimisation avec contraintes sous Matlab
    Par invite690e7e9c dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 01/11/2009, 08h29
  4. Optimisation écart type sous Matlab
    Par invite9632ffc8 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 25/04/2009, 13h32
  5. Optimisation sous contrainte (Matlab)
    Par invitebf68775b dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 07/03/2009, 10h15