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 :
Ce langage offre aussi des instructions permettant de commander différents périphériques* :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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*:
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Toute aide est la bienvenue et merci d'avance !!
JM
Partager