Calcolatore dei parametri probabilistici del sonar (curve ROC)

Da Wikiversità, l'apprendimento libero.
Jump to navigation Jump to search

Nel calcolo delle portate di scoperta del sonar sono impiegate le curve ROC [1] per la valutazione del parametro che è una delle variabili che concorrono nel computo del differenziale di riconoscimento:

Utilizzo delle curve ROC per la determinazione della variabile [modifica]

Per la determinazione della variabile , una volta stabilita la probabiltà di falso allarme [2] accetata e la probabilità di scoperta [3] voluta, si procede all'individuazione del tra le diverse rette disponibili nel diagramma delle curve ROC.

In figura 1 una particolare traccia delle curve ROC relativa al solo valore ; curva estrapolata dalla famiglia delle curve standard tra e :

figura 1

Il grafico mostra come l’intersezione tra la retta di ascissa e la retta di ordinata individui un punto della retta .

Dato che le curve ROC disponibili, su diversi testi relativi alle tematiche del sonar, mostrano soltanto sei curve per i valori: 1 ; 4 ; 9 ; 16 ; 25 ; 36 si comprende come sia estremamente difficile estrapolare valori del tra curve adiacenti.

Una delle soluzioni del problema[modifica]

Un metodo per il calcolo del parametro consiste nella soluzione delle due equazioni trascendenti:

dove nella prima, impostato il valore della accettata, si determina la variabile ; nella seconda, inserendo il valore di calcolato in precedenza e impostando il valore di voluto si ottiene il valore del relativo alla coppia : .

La soluzione delle due equazioni è affidata a routine di calcolo iterativo da sviluppare su di un P.C. con le seguenti limitazioni:

  • variabile da a

Le routine di calcolo[modifica]

La routine di calcolo implementata nel P.C. è scritta in linguaggio Visual Basic, copiando gli algoritmi dal listato del programma in calce si può realizzare la routine in qualsiasi linguaggio.

Il pannello di controllo del calcolatore è mostrato in figura 2:

figura 2 Pannello di calcolo

Esempio di calcolo[modifica]

Premessa:

Nelle due sezioni di calcolo ( sinistra e destra ), dopo l'esecuzione della routine, vengono indicati come dati calcolati valori di e non sempre identici a quelli impostati, ciò dipende dall'anello di calcolo iterativo che procede a passi discreti, seppur piccoli, per non impiegare tempi di elaborazione eccessivi.

Più precisamente :

  • nella sezione di sinistra il valore di corrisponde alla indicata come "'dato calcolato'" e non alla "impostata" anche se tra i due valori le differenze sono minime.
  • nella sezione di destra il valore di corrisponde alla indicata come "dato calcolato" e non alla "impostata" , anche in questo caso le differenze tra i due valori sono minime.

Un semplice esempio d'impostazione dati e calcolo.


S'inizia nella sezione di sinistra:

  • Se la probabilità di falso allarme accettata è: si digita tale valore nel TextBox e si preme il pulsante verde dati a calcolo, il pulsante cambia colore in rosso nella fase [4] di calcolo, una volta ultimata la fase il valore di compare nel nello shape del pannello di calcolo assieme al valore di , valore di ricalcolo cmpatibile con e il pulsante diventa verde.

In automatico il valore di è trasferito alla sezione di calcolo di destra.

Si agisce ora nella sezione di destra:

  • Se la probabilità di scoperta voluta è: si digita tale valore nel TextBox e si preme il pulsante verde dati a calcolo, il pulsante cambia colore in rosso nella fase[5] di calcolo, una volta ultimata il valore di compare nello shape del pannello di calcolo assieme al valore di , valore di ricalcolo compatibile con e il pulsante diventa verde.

Il pannello relativo all'esempio è mostrato in figura 3:

figura 3 Pannello di calcolo con dati elaborati

Il listato della routine di calcolo in Visual Basic[modifica]

In ambiente di sviluppo Visual Basic inserimento degli oggetti nel Form come indicato in figura 4 nel rispetto della numerazione indicata in rosso.[6].

figura 4 Pannello di controllo

Azione di copia e incolla [7] del programma:


Dim y As Double
Dim p As Double
Dim i As Double
Dim erfx As Double
Dim erfCx As Double
Dim y1 As Double
Dim p1 As Double
Dim i1 As Double
Dim erfx1 As Double
Dim erfCx1 As Double
Dim q As Double
Dim d1 As Double
Dim d2 As Double
Dim pfa As Double
Dim pd As Double
Private Sub text1_KeyPress(KeyAscii As Integer)
If InStr("0123456789.-" + Chr(&H8), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub text2_KeyPress(KeyAscii As Integer)
If InStr("0123456789.-" + Chr(&H8), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub Command1_Click()
Label14.Caption = ""
Label16.Caption = ""
Label20.Caption = ""
Label27.Caption = ""
Text2.Text = ""
Command1.BackColor = vbRed
Label19.Caption = ""
Label11.Caption = ""
s1
End Sub
Sub s1()
'ROUTINE PER IL CALCOLO ITERATIVO DEL q = f(pFA)
Cls
pFAvoluto = Val(Text1.Text)
If pFAvoluto = 0 Then GoTo fineroutine
If pFAvoluto > 49.5 Then Text1.Text = ""
If pFAvoluto > 49.5 Then GoTo fineroutine
'ROUTINE PER IL CALCOLO DELLA Pfa
'=======dati d'ingresso=========
'(q solo per PFA); (q e d solo per Pd)
d = 4
For q = 0 To 3 Step 0.01 'valore del rapporto (T/deviaz.st.)
i = 0
e = 2.718281828
s = 0.0001
a = q / Sqr(2)
ini:
For x = 0 To a Step s
y = e ^ -((x) ^ 2)
p = s * y
i = i + p
erfx = (2 / Sqr(3.141592654)) * i
Next
erfCx = 1 - erfx
pfa = 100 * erfCx / 2
If pfa < pFAvoluto Then GoTo fine 
Next q
fine:
fineroutine:
Label19.Caption = Format(pfa, "##.####")
Label11.Caption = Format(q, "##.####")
Command1.BackColor = vbGreen
End Sub


Private Sub Command2_Click()
Command2.BackColor = vbRed
Label14.Caption = ""
Label16.Caption = ""
End Sub
Sub s2()
'ROUTINE PER IL CALCOLO ITERATIVO DEL d = f(q, pD)
pdvoluto = Val(Text2.Text)
If pdvoluto < 0 Then GoTo finerout
If pdvoluto < pfa Then Text2.Text = ""
If pdvoluto < pfa Then GoTo finerout
For d1 = 0 To 30 Step 0.0001
e = 2.718281828
s = 0.001
a1 = Abs(q - Sqr(d1)) / Sqr(2)
i1 = 0
For x = 0 To a1 Step s
y1 = e ^ -((x) ^ 2)
p1 = s * y1
i1 = i1 + p1
Next
erfx1 = (2 / Sqr(3.14159)) * i1
If (q - Sqr(d1)) > 0 Then erfCx1 = 1 - erfx1
If (q - Sqr(d1)) < 0 Then erfCx1 = 1 + erfx1
pd = 100 * erfCx1 / 2
If pd > pdvoluto Then GoTo fine
Next
fine:
Label14.Caption = Format(pd, "   ##.##")
Label16.Caption = Format(d1, "##.#####")
finerout:
Command2.BackColor = vbGreen
End Sub
Sub s3()
'ROUTINE PER IL CALCOLO  DEL del p(D) = f(q, d)
If dvoluto < 0 Then GoTo finerout
If dvoluto < 0 Then Text2.Text = ""
If dvoluto > 40 Then GoTo finerout
e = 2.718281828
s = 0.0001
d2 = dvoluto
a1 = Abs(q - Sqr(d2)) / Sqr(2)
i1 = 0
For x = 0 To a1 Step s
y1 = e ^ -((x) ^ 2)
p1 = s * y1
i1 = i1 + p1
Next
erfx1 = (2 / Sqr(3.14159)) * i1
If (q - Sqr(d2)) > 0 Then erfCx1 = 1 - erfx1
If (q - Sqr(d2)) < 0 Then erfCx1 = 1 + erfx1
pd = 100 * erfCx1 / 2
fine:
Label27.Caption = Format(pd, "   ##.##")
finerout:
End Sub
Private Sub Timer1_Timer()
If Command2.BackColor = vbRed Then s2
End Sub

Note[modifica]

  1. (Receiver Operating Characteristic, anche note come Relative Operating Characteristic)
  2. La probabiità di falso allarme è indicata indifferentemente con o P.fa.
  3. La probabiità di scoperta è indicata indifferentemente con o P.riv.
  4. La fase di calcolo di è relativamente veloce
  5. La fase di calcolo di è lenta; il tempo dipende naturalmente dalla velocità della CPU del P.C.
  6. Il listato del programma non è commentato
  7. Prestare attenzione alle righe di programma che in base alla pagina possono essere scritte in parte a capo


Bibliografia[modifica]

  • James J. Faran Jr e Robert Hills Jr, Correlators for signal reception, in Office of Naval Research (contract n5 ori-76 project order x technical memorandum no. 27), Cambridge, Massachusetts, Acoustics Research Laboratory Division of Applied Science Harvard University, 1952.
  • James J. Faran Jr e Robert Hills Jr, The application of correlation techniques to acoustic receiving systems, in Office of Naval Research (contract n5 ori-76 project order x technical memorandum no. 28), Cambridge, Massachusetts, Acoustics Research Laboratory Division of Applied Science Harvard University, 1952.
  • R. J. Urick, Principles of underwater sound, Mc Graw – hill, 3^ ed. 1968
  • J.W. Horton, Foundamentals of Sonar, United States Naval Institute,Annapolis Maryland, 1959