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
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é.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
-----