Bonjour,
Je suis étudiant en école d'ingénieur en traitement du signal et je suis actuellement en stage où je traite des données provenant d'EEG ou de MEG provenant de l'étude de l'activité cérébrale.
Je me retrouve donc avec plusieurs signaux et pour chaque signal je souhaite le découper en plusieurs sous parties pour effectuer un calcul sur chacune d'entre elle. Pour mieux comprendre voilà à quoi correspondrait cette opération.
Soit une matrice a :
| 1 2 3 4 5 6 7 8 9 10 |
| 11 12 13 14 15 16 17 18 19 20 | = a
| 21 22 23 24 25 26 27 28 29 30 |
Cette matrice représente 3 signaux qui ont été enregistré.
Le premier signal me donne le vecteur s1 = [ 1 2 3 4 5 6 7 8 9 10 ]
Maintenant ce que je souhaite c'est de faire des sous parties de 4 points, effectuer un calcul, reprendre une sous partie de 4 points (décalée d'un point par rapport à la précédente partie), effectuer un calcul et ainsi de suite jusqu'à la fin du vecteur.
La première idée qui vient à la tête serait de faire une boucle qui réalise l'opération :
[nrow ncol] = size(a);
for i = 1 : nrow
for j = 4 : ncol
coupe = a(i, (j-3):j);
resultat(i, j-3) = calcule (coupe);
end
end
Voilà mon idée et j'espère que vous avez compris ce que je voulais faire (si ce n'est pas le cas n'hésitez pas à me le dire dans le topic) MAIS mon problème est que j'ai BEAUCOUP de données et si je peux éviter des boucles de ce genre dans matlab (et donc de nombreuses minutes voir heures) ça serait super.
Je ne suis pas un expert en algorithme et je voulais savoir s'il y avait un algo qui permette de réaliser ce genre de calcul ou alors y a t il un moyen simple avec matlab en utilisant les calcul vectoriel mais je n'en vois.
Connaîtrez vous un moyen de faire ce calcul rapidement et sans boucles ?
Partager