Somma di sinusoidi in forma esponenziale
Ciao a tutti, ho necessità di ricavare gli smorzamenti delle sinusoidi contenute in un segnale che so essere la sovrapposizioni di diverse sinuosidi smorzate. Per fare questo ho trovato diversi algoritmi, e quello che più mi sembrava indicato per le mie necessità è un algoritmo chiamato HDIDFT (Hann Discrete Interpolation DFT). Fondamentalmente è un algoritmo di calcolo della trasformata discreta di Fourier mediante interpolazione, che utilizza una finestra di Hann sui dati in modo da contenere la dispersione spettrale. L'algoritmo è descritto in questo articolo: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6670774&tag=1.
E' da una settimana che ci sto lavorando e sono riuscito a capirne buona parte e ad implementarlo su Matlab, ma c'è sempre qualcosa che non mi torna e non riesco bene ad identificare cosa. Sono quindi ripartito da capo e mi sono soffermato su come loro presentano la somma di sinusoidi smorzate che inizialmente avevo dato totalmente per scontato:
Detti:
$ N $ =numero totale di samples
$ M $ =numero di sinusoidi contenute nel segnale
$ A_m , f_m ,\varphi_m ,\alpha_m$ = ampiezza, frequenza, fase iniziale e fattore di smorzamento della $m$-esima sinusoide
$ n = 0,1,...,N-1$ = indice per i sample
$ m = 0,1,...,M-1$ = sinusoide $m$-esima
$ x_n $=sample $n$-esimo
La definizione del segnale data nell'articolo è:
$x_n=\sum_{m=0}^{M-1}A_m e^((2\pin)/N(\alpha_m+jf_m)+j\varphi_m)$
La definizione di sinusoide che ho sempre utilizzato io è invece la seguente:
$x(t)=\sum_{m=0}^{M-1}A_m e^((t(\alpha_m+j2\pif_m)+j\varphi_m)$
che considerando che $t=n/f_s$ (con $f_s$=sample rate) penso di poter riscrivere come:
$x_n=\sum_{m=0}^{M-1}A_m e^((n/f_s*(\alpha_m+j2\pif_m)+j\varphi_m)$
Scusate la domanda forse banale, ma non riesco a capire la differenza tra la "mia" e la loro soluzione; in particolare, perchè nella loro soluzione il $2\pi$ è raccolto come se fosse anche presente in $\alpha_m$? non dovrebbe essere presente solo nella componente immaginaria come $\omega_m=2\pif_s$? Non riesco proprio a capire cosa sia stato fatto e perchè. La "sensazione" che ho è che sia una sorta di "normalizzazione" rispetto al periodo di acquisizione ma non riesco a dimostrarlo ne a capire come è stato fatto (ne il motivo se devo essere sincero).
Grazie a tutti
P.s.: delle trasformate di Fourier non ho una visione completa in quanto mi manca parte della teoria, avendole sempre utilizzate 'praticamente' su Matlab, ma questo penso che esuli da questo discorso.
E' da una settimana che ci sto lavorando e sono riuscito a capirne buona parte e ad implementarlo su Matlab, ma c'è sempre qualcosa che non mi torna e non riesco bene ad identificare cosa. Sono quindi ripartito da capo e mi sono soffermato su come loro presentano la somma di sinusoidi smorzate che inizialmente avevo dato totalmente per scontato:
Detti:
$ N $ =numero totale di samples
$ M $ =numero di sinusoidi contenute nel segnale
$ A_m , f_m ,\varphi_m ,\alpha_m$ = ampiezza, frequenza, fase iniziale e fattore di smorzamento della $m$-esima sinusoide
$ n = 0,1,...,N-1$ = indice per i sample
$ m = 0,1,...,M-1$ = sinusoide $m$-esima
$ x_n $=sample $n$-esimo
La definizione del segnale data nell'articolo è:
$x_n=\sum_{m=0}^{M-1}A_m e^((2\pin)/N(\alpha_m+jf_m)+j\varphi_m)$
La definizione di sinusoide che ho sempre utilizzato io è invece la seguente:
$x(t)=\sum_{m=0}^{M-1}A_m e^((t(\alpha_m+j2\pif_m)+j\varphi_m)$
che considerando che $t=n/f_s$ (con $f_s$=sample rate) penso di poter riscrivere come:
$x_n=\sum_{m=0}^{M-1}A_m e^((n/f_s*(\alpha_m+j2\pif_m)+j\varphi_m)$
Scusate la domanda forse banale, ma non riesco a capire la differenza tra la "mia" e la loro soluzione; in particolare, perchè nella loro soluzione il $2\pi$ è raccolto come se fosse anche presente in $\alpha_m$? non dovrebbe essere presente solo nella componente immaginaria come $\omega_m=2\pif_s$? Non riesco proprio a capire cosa sia stato fatto e perchè. La "sensazione" che ho è che sia una sorta di "normalizzazione" rispetto al periodo di acquisizione ma non riesco a dimostrarlo ne a capire come è stato fatto (ne il motivo se devo essere sincero).
Grazie a tutti

P.s.: delle trasformate di Fourier non ho una visione completa in quanto mi manca parte della teoria, avendole sempre utilizzate 'praticamente' su Matlab, ma questo penso che esuli da questo discorso.
Risposte
Ciao, grazie per la risposta. Tutto il discorso della finestratura ed i passaggi successivi mi sono chiari, è proprio un dubbio sulla forma in cui viene espressa la sinusoide. Tralasciamo la sommatoria $m$ come hai detto tu. La tua forma del segnale campionato (a meno dello smorzamento $\alphat$) coincide alla mia, dato che $T=f_s^(-1)$. Esprimendo in 'forma estesa' la formula nella 'tua versione' tralasciando $m$:
$x_(nostra)(n)=Ae^(\alphanT+j(2\pifnT+\varphi))$ (1)
che è equivalente alla 3° che ho scritto io; infatti è la "forma classica" con cui si presentano le sinuosidi smorzate in forma esponenziale.
La formula proposta nell'articolo ha invece quel raccoglimento di $\2pin/N$ fatto nell'esponenziale che non capisco cosa rappresenti. Quello che mi fa ancora più confusione è il fatto che $2\pi$ sia raccolto anche per l'$alpha$; cioè, scriviamola in forma estesa (sempre tralasciando $m$):
$x_(articolo)(n)=Ae^((2\pin\alpha)/N) e^(j((2\pinf)/N+\varphi))$ (2)
dove la prima componente esponenziale è lo smorzamento, la seconda sono le sinusoidi con lo sfasamento (giusto?)
Ora, nella (2) il $2\pi$ nella componente immaginaria posso 'accorparlo' ad $f$ facendolo diventare la pulsazione $omega$, quindi per quanto riguarda le componenti sinusoidali della (2) posso riscrivere:
$e^(j(n/N\omega+\varphi))$
Questo può anche starmi bene, nel senso che è come se avesse moltiplicato la nostra componente sinusoidale (della (1)) per $1/(NT)$ (infatti $\omeganT 1/(NT) = \omega n/N$).
Effettuando la moltiplicazione anche sulla nostra componente di smorzamento ottengo:
$e^((\alphan)/N)$
E' qui che nasce il dubbio. Perchè a noi viene lo smorzamento pari a $e^((\alphan)/N)$ e a loro viene $e^((2\pi\alphan)/N)$ ? Da dove salta fuori quel $2\pi$?
E ancora, ammesso che sia la strada 'giusta', che senso 'fisico' ha dividere tutte le componenti per $NT$? $N$ è il numero totale di sample, mentre $T$ è il tampo totale di campionamento; verrebbe un unità di misura sample*sec; quindi all'esponente della (2) come unità di misura ci sarebbero $(rad*sample)/(sample*sec)==rad/sec$,cioè hanno 'convertito' delle sinusoidi funzioni di angoli in sinusoidi funzione di pulsazioni. Forse per esserre già "pronti" ad effettuare la trasformata ed avere un unità di misura comune che possa essere raccolta in qualche modo?
Scusate il brainstorming ma non so più che pesci pigliare.
Grazie.
$x_(nostra)(n)=Ae^(\alphanT+j(2\pifnT+\varphi))$ (1)
che è equivalente alla 3° che ho scritto io; infatti è la "forma classica" con cui si presentano le sinuosidi smorzate in forma esponenziale.
La formula proposta nell'articolo ha invece quel raccoglimento di $\2pin/N$ fatto nell'esponenziale che non capisco cosa rappresenti. Quello che mi fa ancora più confusione è il fatto che $2\pi$ sia raccolto anche per l'$alpha$; cioè, scriviamola in forma estesa (sempre tralasciando $m$):
$x_(articolo)(n)=Ae^((2\pin\alpha)/N) e^(j((2\pinf)/N+\varphi))$ (2)
dove la prima componente esponenziale è lo smorzamento, la seconda sono le sinusoidi con lo sfasamento (giusto?)
Ora, nella (2) il $2\pi$ nella componente immaginaria posso 'accorparlo' ad $f$ facendolo diventare la pulsazione $omega$, quindi per quanto riguarda le componenti sinusoidali della (2) posso riscrivere:
$e^(j(n/N\omega+\varphi))$
Questo può anche starmi bene, nel senso che è come se avesse moltiplicato la nostra componente sinusoidale (della (1)) per $1/(NT)$ (infatti $\omeganT 1/(NT) = \omega n/N$).
Effettuando la moltiplicazione anche sulla nostra componente di smorzamento ottengo:
$e^((\alphan)/N)$
E' qui che nasce il dubbio. Perchè a noi viene lo smorzamento pari a $e^((\alphan)/N)$ e a loro viene $e^((2\pi\alphan)/N)$ ? Da dove salta fuori quel $2\pi$?
E ancora, ammesso che sia la strada 'giusta', che senso 'fisico' ha dividere tutte le componenti per $NT$? $N$ è il numero totale di sample, mentre $T$ è il tampo totale di campionamento; verrebbe un unità di misura sample*sec; quindi all'esponente della (2) come unità di misura ci sarebbero $(rad*sample)/(sample*sec)==rad/sec$,cioè hanno 'convertito' delle sinusoidi funzioni di angoli in sinusoidi funzione di pulsazioni. Forse per esserre già "pronti" ad effettuare la trasformata ed avere un unità di misura comune che possa essere raccolta in qualche modo?
Scusate il brainstorming ma non so più che pesci pigliare.
Grazie.
P.s. Essendo nuovo del forum non mi è permesso mandare MP. Ho estratto la parte dell'articolo di interesse al link https://drive.google.com/file/d/1tHLkUo46__WLgUmUiUZPf0Ic9AgGZgJS/view?usp=sharing.
La formula in particolare è la (1) a pag. 1506. Grazie ancora.
La formula in particolare è la (1) a pag. 1506. Grazie ancora.
Ciao Frenzi,
Benvenuto sul forum!
L'articolo di cui hai postato il link non riesco a leggerlo (se puoi mandarmelo in MP magari riesco a darci un'occhiata), ma così ad una prima impressione mi pare che la chiave di lettura sia qui:
"The core ideas of the algorithm is that the signal is weighted using Hann window before discrete Fourier transform and the frequencies, amplitudes, phases, and damping factors of the signal are obtained by frequency domain interpolation. It is shown that the purpose of improving the accuracy of parameter estimation is achieved using Hann window, which reduces long-range leakage and frequency-domain interpolation that eliminates the effect of the picket fence."
Cioè, se ho capito bene, inizialmente si ha un segnale (omettendo per comodità il pedice $m$) del tipo
$x_s(t) = A e^{j (2\pi f t + \varphi)} $
Il segnale campionato in $t = nT $ sarà
$x_s(n) = x_s(nT) = A e^{j (2 \pi f nT + \varphi)} $
Tale segnale viene poi "pesato" (weighted) usando la finestra (window) di Hann:
$ x(n) = x_s(n) w_{"Hann"}(n) $, $n = 0, 1, ..., N - 1 $
ove $ w_{"Hann"}(n) = [1/2 + 1/2 cos((2\pi n)/N)] $
Benvenuto sul forum!
L'articolo di cui hai postato il link non riesco a leggerlo (se puoi mandarmelo in MP magari riesco a darci un'occhiata), ma così ad una prima impressione mi pare che la chiave di lettura sia qui:
"The core ideas of the algorithm is that the signal is weighted using Hann window before discrete Fourier transform and the frequencies, amplitudes, phases, and damping factors of the signal are obtained by frequency domain interpolation. It is shown that the purpose of improving the accuracy of parameter estimation is achieved using Hann window, which reduces long-range leakage and frequency-domain interpolation that eliminates the effect of the picket fence."
Cioè, se ho capito bene, inizialmente si ha un segnale (omettendo per comodità il pedice $m$) del tipo
$x_s(t) = A e^{j (2\pi f t + \varphi)} $
Il segnale campionato in $t = nT $ sarà
$x_s(n) = x_s(nT) = A e^{j (2 \pi f nT + \varphi)} $
Tale segnale viene poi "pesato" (weighted) usando la finestra (window) di Hann:
$ x(n) = x_s(n) w_{"Hann"}(n) $, $n = 0, 1, ..., N - 1 $
ove $ w_{"Hann"}(n) = [1/2 + 1/2 cos((2\pi n)/N)] $
"Frenzi":
Perchè a noi viene lo smorzamento pari a $e^{(\alpha n)/N} $ e a loro viene $e^{(2\pi \alpha n)/N}$ ? Da dove salta fuori quel $2\pi $?
Non mi porrei troppi problemi, nel senso che il fattore di smorzamento che tipicamente è indicato con $\alpha$ nell'articolo è indicato con $\beta = 2\pi \alpha $, cosa tranquillamente lecita: non so perché lo fa, probabilmente questa forma risulta più comoda all'autore dell'articolo per i calcoli successivi con la trasformata...
