C. Del Turco Posted April 21, 2024 Report Posted April 21, 2024 (edited) Per eventuali sviluppi compresi nel post: link al calcolatore SONARMATH (per la determinazione dei parametri acustci del sonar) La funzione indicata è teorica, il suo compito, una volta tracciata in un sistema di assi cartesiani, è di consentire il controllo tra l’andamento del sistema di correlazione simulato via software , oggetto di questa pagina, e l’andamento ideale della stessa. L’andamento della C(o), variabile da 0 ad 1, è riportato in figura 1 in funzione del rapporto Si/Ni (rapporto Segnale/Disturbo) variabile da – 60 dB a + 60 dB all’ingresso del correlatore. Il circuito da simulare via software Un circuito elettronico di correlazione con segnali e regolazioni delle condizioni di variabilità del rapporto Segnale/Disturbo si può pensare diviso in due sezioni: 1) Generatore dei segnali e dei rumori d’ingresso al correlatore in funzione del rapporto Si/Ni 2) Schema a blocchi del circuito di correlazione a due stati in funzione della costante d’integrazione RC. L’insieme delle due sezioni è riportato in figura 2 come se fosse un circuito fisico reale: La schermata in Visual Basic: Simulando via software tutto l’insieme di figura 2 al lancio del programma la schermata sul P.C. si presenta come in figura 3: figura 3 Un reticolo cartesiano con ascisse Si/Ni variabili da – 60 dB a + 60 db e ordinate C() variabili da –1 ad 1. Dove i comandi, in basso da sinistra, sono: Pulsante tracciamento C(o) teorica Pulsante avvio routine di simulazione e tracciamento della C(o) per punti (campioni) Numero dei campioni a calcolo Valore selezionato del beta (è l’analogo della costante di tempo RC si veda: https://it.wikiversity.org/wiki/Integrazione_numerica_per_i_processi_di_correlazione Pulsante di reset Un esempio: In figura 4 è riportata, sopra la curva teorica di C(o) in rosso, l’andamento campionato a puntini del risultato simulato della tensione d’uscita del correlatore; sono evidenti le ondulazioni del fenomeno a causa della varianza. (la varianza decresce con l’incremento del beta) I dati impostati sono: n° campioni = 20000 beta = 100 figura 4 Il software di simulazione. Il software di simulazione in Visual Basic è complicato, se ne consiglia lo smembramento in routine complete da fare girare da sole nella ricostruzione, mano a mano, di tutto il programma. Il listato in Visual Basic che simula il circuito a blocchi di figura 2 è sotto riportato e può essere inserito in ambiente VB con copia/incolla. Le varie funzioni: -generazione reticolo e presentazione curve di risposta -tracciamento funzione teorica -generazione segnali e disturbi -variazione del rapporto Si/Ni -correlazione ed integrazione numerica sono evidenziate con note nel listato del programma. Per l’inserimento degli oggetti rispettare la posizione dei tre pulsanti, le List. dei due combo e i label. ‘Listato Dim beta As Integer Private Sub Command3_Click() Cls reticolo End Sub Private Sub Form_Paint() Label1.Caption = "SIMULATORE DEL PROCESSO DI CORRELAZIONE" For xi = 0 To 4600 * 2 Step 230 * 2 For yi = 0 To 3200 * 2 Step 20 * 2 PSet (xi, yi) Next yi Next xi For yi = 0 To 3200 * 2 Step 160 * 2 For xi = 0 To 4600 * 2 Step 30 * 2 PSet (xi, yi) Next xi Next yi Line (0, 1600 * 2)-(4600 * 2 + 160, 1600 * 2) Line (4600, 0)-(4600, 3200 * 2) End Sub Sub reticolo() Label1.Caption = "SIMULATORE DEL PROCESSO DI CORRELAZIONE" For xi = 0 To 4600 * 2 Step 230 * 2 For yi = 0 To 3200 * 2 Step 20 * 2 PSet (xi, yi) Next yi Next xi For yi = 0 To 3200 * 2 Step 160 * 2 For xi = 0 To 4600 * 2 Step 30 * 2 PSet (xi, yi) Next xi Next yi Line (0, 1600 * 2)-(4600 * 2 + 160, 1600 * 2) Line (4600, 0)-(4600, 3200 * 2) End Sub Private Sub Command1_Click() 'TRACCIA SOLO CURVA TEORICA For sn = -60 To 60 Step 0.1 sk = sn + 60 'CALCOLO TEORICO Su e Crt SECONDO LA FORMULA CLASSICA CORRELAZ. CLIPPATA t = 1 / (1 + (1 / (10 ^ ((sn) / 20)) ^ 2)) Su = (2 / 3.14) * Atn(t / Sqr(-t * t + 1)) 'Su normalizzato PSet (9200 * sk / 120, 3200 - 3200 * Su), vbRed 'per tracciare la Crt=f(Si/Ni) Next End Sub Sub fcalcolata() 'TRACCIA SOLO CURVA TEORICA For sn = -60 To 60 Step 0.1 sk = sn + 60 'CALCOLO TEORICO Su e Crt SECONDO LA FORMULA CLASSICA CORRELAZ. CLIPPATA t = 1 / (1 + (1 / (10 ^ ((sn) / 20)) ^ 2)) Su = (2 / 3.14) * Atn(t / Sqr(-t * t + 1)) 'Su normalizzato PSet (9200 * sk / 120, 3200 - 3200 * Su), vbRed 'per tracciare la Crt=f(Si/Ni) Next End Sub 'CORRELAZIONE CLIPPATA AD UN SOLO CANALE Private Sub Command2_Click() Cls reticolo 'fcalcolata beta = 100 If Combo1.Text = "100" Then beta = 100 If Combo1.Text = "200" Then beta = 200 If Combo1.Text = "400" Then beta = 400 If Combo1.Text = "800" Then beta = 800 If Combo1.Text = "1600" Then beta = 1600 If Combo1.Text = "3200" Then beta = 3200 If Combo1.Text = "6400" Then beta = 6400 campioni = 20000 If Combo2.Text = "20000" Then campioni = 20000 If Combo2.Text = "200000" Then campioni = 200000 For sn = -60 To 60 Step 0.5 sx = sn + 60 Cr = 0 '<--- NOTA BENE SI DEVE AZZERARE cr AD OGNI NUOVO VALORE DI Si/Ni 'AFFINCHE' IL CALCOLO DEI 20000 PUNTI ENTRO L'ANELLO NON RISENTA 'DI VALORI IN MEM.cr CALCOLATI IN PRECEDENZA 'beta = 4000 Randomize Timer j = 10 ^ (sn / 20) For x = 0 To campioni k1 = Rnd k2 = Rnd k3 = Rnd k4 = Rnd k5 = Rnd ka1 = Rnd ka2 = Rnd ka3 = Rnd ka4 = Rnd ka5 = Rnd ks1 = Rnd ks2 = Rnd ks3 = Rnd ks4 = Rnd ks5 = Rnd nl1 = (k1 + k2 + k3 + k4 + k5) - 2.5 'rumore scorrelato nl1 nl2 = (ka1 + ka2 + ka3 + ka4 + ka5) - 2.5 'rumore scorrelato nl2 yo = (ks1 + ks2 + ks3 + ks4 + ks5) - 2.5 'sorgente del segnale Y1 = yo * j + nl1 'primo segnale Y2 = yo * j + nl2 'secondo segnale If Y1 > 0 Then n1 = 1 Else n1 = 0 'n1=1^segnale If Y2 > 0 Then n2 = 1 Else n2 = 0 'n2=2^ segnale c = 1 - (n1 Xor n2) Cr = c + Cr - (Cr / beta) 'varia da 4000 corMax a 2000 Scorrelaz ( sarebbe 0 in anticorr) Next y = (Cr / beta) ya = y - 0.5 Circle (9200 * sx / 120, 3200 - 3200 * 2 * ya), 10, vbBlue 'per tracciare la cr=f(Si/Ni) Next sn fine: End Sub Edited June 25, 2024 by C. Del Turco Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.