J'ai besoin que cette partie de mon code s'exécute plus rapidement, comme on l'appelle plusieurs fois. Je suis nouveau à Matlab et je me sens comme s'il devait y avoir un moyen de faire cela qui n'est pas si rond. Toute aide que vous pourriez donner sur la façon d'améliorer la vitesse de ce que j'ai ou d'autres fonctions à examiner dans ce qui m'aiderait à effectuer cette tâche serait appréciée.Matlab: Problème de performance de code Utilisation de "ismember"
(La tâche consiste à obtenir uniquement les lignes de "alldata" où la première colonne est dans l'ensemble des "minutesintervals" dans "alldataMinutes". "Minuteintervals" est juste la valeur minimale de la colonne "alldata" le maximum de alldata
minuteintervals= min(alldata(:,1)):20:max(alldata(:,1)); %20 second intervals
alldataMinutes= zeros(30000,4);
counter=1;
for x=1:length(alldata)
if ismember(alldata(x,1), minuteintervals)
alldataMinutes(counter,:)= alldata(x,:);
counter= counter+1;
end
end
alldataMinutes(counter:length(alldataMinutes),:)= [];
en utilisant ISMEMBC (http://UndocumentedmMtlab.com/blog/ismembc-undocumented-helper-function/) devrait améliorer les performances par rapport à ISMEMBER. Dans ce cas le boost est négligeable comparé à celui obtenu par la vectorisation de gnovice, mais juste FYI –
@Yair: Bon à savoir, bien qu'il y ait une faute de frappe dans votre lien. Voici le [lien correct] (http://undocumentedmatlab.com/blog/ismembc-undocumented-helper-function/) pour toute personne intéressée. – gnovice
merci de signaler gnovice :-) –