Calcul intercorrélation entre 2 signaux
Bonjour,
Je travaille sur un projet dans lequel je dois définir la réponse impulsionnelle d'un processus par identification. La démarche est la suivante :
Je crée un signal dans Matlab (une sbpa : séquence binaire pseudo aléatoire centrée autour de 0), l'envoie via une carte d'acquisition à travers le filtre. Je reçois la sortie du filtre via la même carte d'acquisition. Ensuite, je dois effectuer un calcul de corrélation entre le signal envoyé et le signal reçu. Le résultat est censé donner la réponse impulsionnelle du filtre. Pour m'aider, mon tuteur m'a fourni un code réalisé en basic réalisant la création du signal, son envoi, sa réception et le calcul final. Je n'arrive pas a comprendre le calcul de l'envoi/réception et de la corrélation dont voici l'extrait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| % Module 1 et 2: generation de la sbpa sur 6 registres
310 for i = 1 to 6
320 x(i) = 1
330 next i
% Module 2
340 for k = 1 to 63
350 x=x(5)+x(6)
360 if x<2 then 380
370 x = 0
380 x(6) = x(5)
390 x(5) = x(4)
400 x(4) = x(3)
410 x(3) = x(2)
420 x(2) = x(1)
430 x(1) = x
440 if x = 0 then 443
441 u(k) = u(k+63) = +10
442 goto 450
443 u(k) = u(k+63) = -10
450 next k |
Ce langage offre aussi des instructions permettant de commander différents périphériques* :
call (0, t) Initialisation de l’horloge temps réel. Lance l’horloge et fixe la valeur de T exprimée en milli seconde.
call (0) Arrêt de l’horloge
call (1, a) Transmet au convertisseur numérique analogique (CNA), au rythme de la RTC, le nombre A qui donne en sortie du convertisseur une tension égale à A volts
call (2, b) Le convertisseur analogique numérique (CAN) reçoit la tension électrique B et fournit au calculateur, au rythme de la RTC, un nombre correspondant à B.
call (12) Arrêt du CNA et du CAN
Le module n°3, toujours aussi peu commenté (*!), est le suivant*:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| % Module 3 : envoi et reception du signal
470 call (0, 100)
480 for k = 1 to 126
490 a = u(k)
500 call(1, a)
510 if k <= 63 then 540
520 call(2, b)
530 y(k-63) = B
540 call 12
550 next k
560 call (0)
% Module 4 : calcul et identification
570 for k = 1 to 63
580 p = 0
590 for i = 1 to 63
600 j = i k + 1
610 if j > 0 then 630
620 j = j + 63
630 p = p + y(i)*u(j)
640 next i
650 q(k) = p*/ 63
660 h(k) = q(k) /101.59
670 print «*k =*»*; k-1*; q(k)
690 next k |
Je ne comprends pas l'instruction à la ligne 510 du module 3. De plus, je ne vois pas d'où vient la valeur 101.59 a la ligne 660.
Toute aide est la bienvenue et merci d'avance !!
JM