J'espère poster sur le bon forum, je me soumets avec humilité aux fourches caudines si tel n'est pas le cas. Faites-moi mal.
C'est un problème que je fais sous matlab, mais le raisonnement pourrait être étendu en partie - c'est essentiellement un problème mathématique, d'où mon post dans cette section (je pense que matlab n'aide qu'à la marge en vectorisant certaines opérations - corrigez-moi si je me trompe)
Le problème est le suivant :
soit X et Y deux vecteurs de réels de longueur N, avec N trèèèèèèèèèès grand (une semaine échantillonnée à 500 Hz). Je vais soumettre à X et Y les outrages suivants :
Pour chaque entier j compris entre 0 et N-500
* je prélève un sous-échantillon de n=501 échantillons sur chaque vecteur X(j:j+500) et Y(j:j+500);
* je calcule R(j) le vecteur d'intercorrélation associé à X et Y tronçonné, d'après la formulepour m compris entre 0 et n-1
fin (boucle sur j)
Ca fait beaucoup de calculs. Enormément de calculs. Des calculs qui en plus se répètent souvent. En effet, regardons de plus près pour j=0 et j=1 (par facilité, le cas j-1 -> j doit se faire facilement) :
pour j=0, je fais
pour j=1, je fais
ie
Question 1 : suis-je dans le juste, ou me suis-je planté ? (fatigue, esprit rouillé)
"Chouette ! On peut alléger la charge du processeur !" me dis-je avec joie.
MAIS
MAIS
Mêêêê
En pratique, on calcule l'intercorrélation en faisant une FFT des deux signaux, un multiplication XY*, et une FFT inverse. Dans le cas présenté, on l'effectue N-500 fois. Je ne me souviens plus du temps d'opération de la fft ....
Là, que vais-je faire ?
Initialisation : je calcule pour j=0 l'intercorrélation de manière classique.
Pour j=1,N-501
Pour m=0,n-1
fin m
fin j
Donc je vais faire (N-501)*(n-1) opérations
Sachant que je travaille sous matlab pour des raisons de compatibilité avec mes collègues, sachant que matlab vectorise certaines opérations et qu'il utilise fftw :
question 2 (numérique) : est-ce que je gagne en temps à faire le calcul que je propose ?
question 3 (pratique) : .... je vais vraiment gagner un temps appréciable, ou je me casse la tête pour pas grand-chose ?![]()
-----