Pagina 1 di 1

Calcolo sfasamento con Matlab

MessaggioInviato: 14 ott 2014, 10:16
da Filippo
Buongiorno a tutti
Volevo chiedervi se conoscete un buon metodo per il calcolo dello sfasamento( gradi o rad) tra 2 sinusoidi aventi la stessa frequenza ma ampiezze diverse.
Ho già provato con arcoseni ma non riesco ad avere in uscita una lettura corretta. Possibile che non esista un blocco già predisposto in Matlab??

Re: Calcolo sfasamento con maltlab

MessaggioInviato: 14 ott 2014, 10:23
da g.schgor
Che c'entra la differenza di ampiezza?
In che forma hai le frequenze?

Re: Calcolo sfasamento con maltlab

MessaggioInviato: 14 ott 2014, 10:31
da Russell
Filippo ha scritto:Possibile che non esista un blocco già predisposto in Matlab??


ci saranno tecniche migliori, ma se i segnali sono puliti allora
trova il max di xcorr(s1, s2), il suo indice è relativo allo sfasamento

Re: Calcolo sfasamento con maltlab

MessaggioInviato: 14 ott 2014, 11:01
da Filippo
g.schgor ha scritto:Che c'entra la differenza di ampiezza?
In che forma hai le frequenze?


Con la stessa ampiezza potrei confrontale..
In che senso forma delle frequenze? La frequenza è di 50 Hz..

Re: Calcolo sfasamento con maltlab

MessaggioInviato: 14 ott 2014, 11:24
da g.schgor
Intendo: come sono espresse le frequenze?

Re: Calcolo sfasamento con maltlab

MessaggioInviato: 14 ott 2014, 11:32
da Filippo
g.schgor ha scritto:Intendo: come sono espresse le frequenze?

Sto lavoranto in simulink. Praticamente devo misurare lo sfasamento tra tensione e corrente, dove la tensione è quella di rete, che la setto io con un generatore, mentre la corrente la misuro sul carico qualsiasi.
Quindi in uscita ho 2 sinusoidi sfasate.

Re: Calcolo sfasamento con maltlab

MessaggioInviato: 14 ott 2014, 14:51
da Russell
ribadisco

Codice: Seleziona tutto
[M, indice]=max( xcorr(s1, s2) );


indice, a parte un valore costante, è lo sfasamento (in campioni)


la costante di cui sopra è relativa alla lunghezza dei segnali, il modo piu' semplice/stupido per trovarla è

Codice: Seleziona tutto
[M, costante]=max( xcorr(s1, s1) );


non è difficile... no?

Re: Calcolo sfasamento con maltlab

MessaggioInviato: 14 ott 2014, 16:55
da Filippo
ok.. Grazie mille delle risposte, proverò a usare la correlazione..

Re: Calcolo sfasamento con Matlab

MessaggioInviato: 21 ott 2014, 9:26
da dimaios
Con l'ausilio della trigonometria e di un filtro passa basso si risolve il problema in modo elegante.

s_1(t) = A \sin( \omega t + \theta_1)
s_2(t) = B \sin( \omega t + \theta_2)

Moltiplicando le due sinusoidi si ha :

s_1(t) \cdot s_2(t) = \frac{1}{2} \cdot \left[      AB \cos( \theta_1 - \theta_2 ) + AB \cos(2 \omega t + \theta_1 + \theta_2)     \right]


Il primo termine è una costante che dipende dallo sfasamento delle due sinusoidi mentre il secondo può essere filtrato con un filtro LP adeguato.

A questo punto basta ricavare \theta_1 - \theta_2.

Nel caso si abbia molto rumore sovrapposto e si desideri stimare più velocemente la differenza di fase bisogna impiegare la teoria degli stimatori.