Stima dei parametri di un segnale dai campioni - algoritmi nel tempo e in frequenza
In questa pagina 5
Il programma del corso comprende "metodi e algoritmi per le misure: trasformata di Fourier, algoritmi per la stima di parametri nel dominio del tempo e della frequenza". Un oscilloscopio o una scheda di acquisizione restituiscono una sequenza di campioni , , e ogni parametro "misurato" (frequenza, ampiezza, tempo di salitatempo per passare dal 10% al 90% dell'ampiezza di un fronte) è il risultato di un algoritmo applicato a quella sequenza. Questa nota raccoglie gli algoritmi di base, con un'implementazione in Python e i risultati su segnali simulati (verificati), per collegare le formule delle altre note ai calcoli che fa uno strumento.
Nel dominio del tempo
Statistiche del segnale. Valore medio , valore efficace (RMS-DC) e RMS-AC con (Valore efficace - RMS-DC, RMS-AC e segnali periodiciIl valore efficace è $V_{rms}=\sqrt{\frac1T\int_0^Tv^2dt}$. Due versioni: RMS-DC (tutto il segnale, componente continua compresa) e RMS-AC (si toglie il valor medio), legate da $V_{rms,DC}^2=V_{DC}^2+V_{rms,AC}^2$. Sinusoide $V_0/\sqrt2$; onda rettangolare $\sqrt{V_H^2d+V_L^2(1-d)}$, AC $(V_H-V_L)\sqrt{d(1-d)}$; triangolare/dente di sega AC $V_{pp}/(2\sqrt3)$, DC $\sqrt{(V_{max}^2+V_{max}V_{min}+V_{min}^2)/3}$. Il multimetro true-RMS in AC dà solo l'RMS-AC; l'oscilloscopio ha le funzioni DC RMS e AC RMS, da usare su un numero intero di periodi (N cycles).Valore efficace - RMS-DC, RMS-AC e segnali periodici →); picco-picco . Il picco-picco è molto sensibile al rumore (un solo campione anomalo lo cambia): per questo si usano i percentilivalori sotto i quali cade una data percentuale dei campioni, meno sensibili ai valori anomali del massimo e del minimo (per esempio il e il ) o la media di più acquisizioni.
Attraversamento di un livello. Per misurare periodi e durate si cercano i campioni consecutivi che sono uno sotto e uno sopra il livello , e si interpola linearmentesi assume che tra due campioni il segnale vari lungo una retta, per stimare l'istante esatto di un attraversamento per migliorare la risoluzione temporale oltre : se ,
Frequenza. Con attraversamenti con pendenza positiva allo stesso livello (per esempio il valor medio) agli istanti : con il vantaggio che l'incertezza sull'istante si divide per il numero di periodi (la regola dei cursori, Misure con i cursori e incertezza dell'oscilloscopioCon i cursori si misurano intervalli di tempo e di tensione; la risoluzione ($\Delta x=T_w/1000$, $\Delta y=FS/2^8$) vale come incertezza assoluta con $u=\Delta/\sqrt3$ (e il manuale dà formule per l'incertezza estesa, $k=2$). Periodo su $n$ periodi: $\Delta x/n$. Grandezze derivate si trattano con la propagazione: pendenza $S=\Delta y/\Delta x$ e guadagno $G=\Delta y_2/\Delta y_1$ con le incertezze relative in quadratura; duty cycle $D=\tau/T$ (la base dei tempi non conta, restano le risoluzioni); sfasamento $\varphi=360^\circ,\tau_d/T$; durata di un fronte $T_s=t_2-t_1$ con $u(T_s)=\sqrt2,u(t)$. Per $V_0$ e $V_{DC}$ da due cursori: $\frac{V_{C1}-V_{C2}}2$ e $\frac{V_{C1}+V_{C2}}2$.Misure con i cursori e incertezza dell'oscilloscopio →).
Tempo di salita e durata dell'impulso. Si stimano il livello basso e il livello alto (da istogrammaconteggio di quanti campioni cadono in ciascun intervallo di valori: mostra i due livelli di un'onda rettangolare o da medie dei tratti piatti) e l'ampiezza ; il tempo di salita è la differenza tra gli istanti in cui il segnale attraversa e ; durata dell'impulso e periodo si misurano al livello 50% (massima pendenza); il duty cyclerapporto tra durata dell'impulso e periodo è il rapporto.
Fit di una sinusoide a tre parametri
Se la frequenza è nota (è quella del generatore), il segnale si riscrive con , : lineare nei tre coefficienti. Si risolve ai minimi quadratimetodo che sceglie i parametri minimizzando la somma dei quadrati degli scarti tra modello e dati: con () e . Si ricavano ampiezza , fasespostamento temporale della sinusoide espresso come angolo e offset . È l'idea del metodo "a quattro parametri" dello standard per i convertitori A/D (che stima anche ). Con campioni e rumore l'incertezza standard dell'ampiezza è circa : dimezzarla richiede quadruplicare i campioni (come la media di tipo A).
Nel dominio della frequenza
La FFT (Spettro dei segnali periodici e FFT dell'oscilloscopioUn segnale periodico di periodo $T$ ha uno spettro a righe alle frequenze $kf_0$, $f_0=1/T$. Per un'onda rettangolare $0\to A$ con duty cycle $d$ la riga $k$ ha ampiezza $2Ad,|\mathrm{sinc}(kd)|$ (inviluppo $|\sin x/x|$, primo zero a $f=1/\tau$); se $d\ne50%$ compaiono anche le armoniche pari. La FFT dell'oscilloscopio lavora sulla finestra visualizzata $T_w$: la risoluzione in frequenza è $\Delta f=1/T_w$ e si migliora solo aumentando $T_w$ (scala dei tempi più lenta), non con più campioni. Si ottengono righe pulite quando la finestra contiene un numero intero di periodi (campionamento coerente), altrimenti c'è dispersione spettrale.Spettro dei segnali periodici e FFT dell'oscilloscopio →, Trasformata di Fourier discreta (TFD)La TFD è la serie di Fourier dei segnali discreti periodici di periodo $N$: servono solo $N$ armoniche, $X(k)=\frac1N\sum_{n=0}^{N-1}x(n)e^{-j2\pi kn/N}$ e $x(n)=\sum_{k=0}^{N-1}X(k)e^{j2\pi kn/N}$. È un prodotto matrice-vettore in $\mathbb{C}^N$ (la matrice di Fourier); la convoluzione circolare diventa prodotto, $N X(k)Y(k)$. La FFT la calcola in $O(N\log N)$.Trasformata di Fourier discreta (TFD) →) dà un'ampiezza per ogni riga distanziata di . Se non è un multiplo esatto di (campionamento non coerentein N campioni non entra un numero intero di periodi del segnale) l'energia si distribuisce sulle righe vicine e l'ampiezza sul picco è sottostimata fino a (caso peggiore con finestra rettangolare, dB). Rimedi: finestra di Hann , che attenua i bordi e riduce la dispersione, con le ampiezze normalizzate dividendo per (così una sinusoide di picco al centro di una riga vale ); e interpolazione parabolicastima della posizione del picco facendo passare una parabola per i tre valori attorno al massimo del picco sui logaritmi dei tre valori attorno al massimo (): con , , , e .
Esempio completo
Sinusoide V, kS/s, campioni (periodi non interi: ), rumore gaussianorumore con distribuzione normale e valor medio nullo mV.
import numpy as np
rng = np.random.default_rng(3)
fs, N, f0, A, C, ph = 100e3, 1000, 3517.0, 2.0, 1.5, 0.7
t = np.arange(N) / fs
x = C + A * np.sin(2 * np.pi * f0 * t + ph) + 0.02 * rng.standard_normal(N)
# nel tempo: media, picco-picco e frequenza dagli attraversamenti del valor medio
L = x.mean()
i = np.where((x[:-1] < L) & (x[1:] >= L))[0]
tc = t[i] + (L - x[i]) / (x[i + 1] - x[i]) / fs
print(x.mean(), x.max() - x.min(), (len(tc) - 1) / (tc[-1] - tc[0]))
# FFT con finestra rettangolare e di Hann, interpolazione parabolica
f = np.fft.rfftfreq(N, 1 / fs)
X = np.fft.rfft(x) / N
w = np.hanning(N)
Xw = np.fft.rfft((x - x.mean()) * w) / (w.sum() / 2)
k = np.argmax(abs(Xw[1:])) + 1
a, b, c = np.log(abs(Xw[k - 1:k + 2]))
delta = 0.5 * (a - c) / (a - 2 * b + c)
print(2 * abs(X[np.argmax(abs(X[1:])) + 1]), abs(Xw[k]), (k + delta) * fs / N)
# fit a tre parametri con f0 nota
M = np.column_stack([np.cos(2 * np.pi * f0 * t), np.sin(2 * np.pi * f0 * t), np.ones(N)])
Bc, Bs, Cc = np.linalg.lstsq(M, x, rcond=None)[0]
print(np.hypot(Bc, Bs), Cc)Risultati ( V, V, Hz veri):
| algoritmo | ampiezza (V) | altri parametri |
|---|---|---|
| picco-picco (nel tempo) | valor medio V, inflato dal rumore | |
| attraversamenti del valor medio | Hz (35 attraversamenti) | |
| FFT rettangolare | () | picco su Hz (riga più vicina) |
| FFT con finestra di Hann | () | con interpolazione Hz |
| fit a tre parametri | offset V, fase rad |
Il fit e il conteggio degli attraversamenti sono i più accurati perché sfruttano molti campioni e un modello del segnale; la FFT rettangolare non coerente è la peggiore per l'ampiezza e per la frequenza (risoluzione Hz).
Tempo di salita da un gradino del primo ordine. Per con s, campionato a MS/s con rumore, gli attraversamenti interpolati del e del danno s, in accordo con s. Duty cycle di un'onda rettangolare con s e s a MS/s, dagli attraversamenti al : periodo medio s e durata s (), con risoluzione molto migliore dell'intervallo di campionamento di ns grazie all'interpolazione.
Errori comuni
- Leggere l'ampiezza dal massimo grezzo della FFT senza sapere se il campionamento è coerente.
- Calcolare il picco-picco con su un segnale rumoroso e crederlo il vero picco-picco.
- Usare gli attraversamenti senza interpolare: la risoluzione resta .
- Interpolare il picco di una FFT con la finestra rettangolare: la formula parabolica vale con finestre a lobo principale largo (Hann).
Versione ripasso
- Tempo: media, RMS, picco-picco (rumore: percentili); attraversamento ; ; tra e , durate e duty cycle al (Misure con i cursori e incertezza dell'oscilloscopioCon i cursori si misurano intervalli di tempo e di tensione; la risoluzione ($\Delta x=T_w/1000$, $\Delta y=FS/2^8$) vale come incertezza assoluta con $u=\Delta/\sqrt3$ (e il manuale dà formule per l'incertezza estesa, $k=2$). Periodo su $n$ periodi: $\Delta x/n$. Grandezze derivate si trattano con la propagazione: pendenza $S=\Delta y/\Delta x$ e guadagno $G=\Delta y_2/\Delta y_1$ con le incertezze relative in quadratura; duty cycle $D=\tau/T$ (la base dei tempi non conta, restano le risoluzioni); sfasamento $\varphi=360^\circ,\tau_d/T$; durata di un fronte $T_s=t_2-t_1$ con $u(T_s)=\sqrt2,u(t)$. Per $V_0$ e $V_{DC}$ da due cursori: $\frac{V_{C1}-V_{C2}}2$ e $\frac{V_{C1}+V_{C2}}2$.Misure con i cursori e incertezza dell'oscilloscopio →).
- Fit a 3 parametri ( nota): , minimi quadrati; , .
- Frequenza: FFT, righe a ; non coerente: ampiezza sottostimata fino a ; Hann + interpolazione parabolica (Spettro dei segnali periodici e FFT dell'oscilloscopioUn segnale periodico di periodo $T$ ha uno spettro a righe alle frequenze $kf_0$, $f_0=1/T$. Per un'onda rettangolare $0\to A$ con duty cycle $d$ la riga $k$ ha ampiezza $2Ad,|\mathrm{sinc}(kd)|$ (inviluppo $|\sin x/x|$, primo zero a $f=1/\tau$); se $d\ne50%$ compaiono anche le armoniche pari. La FFT dell'oscilloscopio lavora sulla finestra visualizzata $T_w$: la risoluzione in frequenza è $\Delta f=1/T_w$ e si migliora solo aumentando $T_w$ (scala dei tempi più lenta), non con più campioni. Si ottengono righe pulite quando la finestra contiene un numero intero di periodi (campionamento coerente), altrimenti c'è dispersione spettrale.Spettro dei segnali periodici e FFT dell'oscilloscopio →).
- Esempio: V, Hz, , kS/s: rettangolare , Hann ( Hz), fit , attraversamenti Hz; s (s).
- Errori: ampiezza grezza dalla FFT, rumoroso, nessuna interpolazione.
- Esempio (rumore mV, ): picco-picco V; FFT rettangolare V (), Hann V; fit V, offset V, fase rad; attraversamenti Hz.
- Fronti: s (s); duty cycle s con interpolazione (risoluzione ).