Teoria dei segnali/Campionamento dei segnali: differenze tra le versioni
m Template + Categoria |
Nessun oggetto della modifica |
||
Riga 201: | Riga 201: | ||
ovvero, operativamente. |
ovvero, operativamente. |
||
\begin{enumerate} |
\begin{enumerate} |
||
\kn,.m /. |
|||
\item |
|||
si campiona il segnale di ingresso $x(t)$ e la risposta impulsiva del filtro $h(t)$ con rispettando la condizione di Nyquist |
|||
\item |
|||
si compie un operazione di zero padding dei vettori $x[n]$ e $h[n]$ estendendoli a $N_{x} + N_{h} -1$ componenti |
|||
\item |
|||
si valutano le trasformate finite dei due vettori estesi |
|||
\item |
|||
si calcola il prodotto componente per componente dei due vettori trasformati |
|||
ottenendo il vettore di uscita trasformato |
|||
\item |
|||
si valuta la trasformata finita inversa del vettore trovato, ottenendo $y[n]$ |
|||
e quindi $y(t)$ |
|||
\end{enumerate} |
|||
Per aumentare la precisione dell'operazione è possibile anche fare uno zero padding differente, aggiungendo campioni nulli tra i campioni del segnale (????) |
|||
[[Categoria:Teoria dei segnali|Campionamento dei segnali]] |
Versione delle 03:36, 1 feb 2007
Campionamento dei segnali
Campionamento
Dato un segnale continuo $x(t)$, si ottiene da esso il \emph{segnale campionato} $z(t)$ con un \emph{campionatore} che moltiplica il segnale in ingresso per un \emph{segnale campionatore} $c(t-pT_{c})$ periodico di periodo $T_{c}$; l'operazione è detta \emph{campionamento}, $T_{c}$ è il \emph{tempo di campionamento}, $f_{c} = 1/T_{c}$ è la \emph{frequenza di campionamento}
il segnale campionatore è una successione periodica di impulsi $c(t)$ \begin{equation} c(t-pT_{c}) = \sumI{p} c(t-pT_{c}) \end{equation} \begin{displaymath} \TCF{c(t-pT_{c})} = \frac{1}{T_{c}} \sumI{k}
\left. C(f) \right|_{f=kf_{c}} \delta(f-kf_{c})
\end{displaymath} \begin{displaymath} \TSF{c(t-pT_{c})} = f_{c} \left. C(f) \right|_{f = kf_{c}} \end{displaymath}
il segnale campionato è \begin{equation} z(t) = x(t) c(t-iT_{c}) \phantom{30} Z(f) = X(f) \conv C(f) = \sumI{k} C(kf_{c}) X(f - kf_{c}) \end{equation}
====Campionamento ideale} Si ha un \emph{campionamento ideale} quando il segnale campionatore è una sequenza di delte di Dirac \begin{equation} c_{id}(t) = T_{c} \sumI{n} \delta(t-nT_{c}) \phantom{30} C_{id}(f) = \sumI{k} \delta(f-kf_{c}) \phantom{30} c_{id}(t) = \delta(t) \end{equation}
====Campionamento naturale} Un \emph{campionatore naturale} utilizza un impulso campionatore rettangolare $c(t) = \rect{t}{\tau}$, \begin{equation} c_{na}(t) = \sumI{n} \rect{t-nT_{c}}{\tau} \phantom{30} C_{na}(f) = f_{c} \sumI{k} \sinc(kf_{c}) \delta(f - kf_{c}) \end{equation} se si scompone il segnale periodico $c_{na}(t)$ nella sua trasformata serie, il termine a frequenza nulla crea una replica base dello spettro del segnale $x(t)$, i termini a frequenze minori del doppio della banda del segnale creano repliche dello spettro di $x(t)$ che si sovrappongono alla replica base ed impediscono di ricostruire esattamente il segnale
====Campionamento a mantenimento} Un altro tipo di campionamento reale consiste nel mantenere il valore assunto dal segnale per un \emph{tempo di mantenimento} $\tau \leq T_{c}$ (spesso $\tau=T_{c}$) ogni tempo di campionamento; uno schema del campionatore a mantenimento o \emph{campionatore sampling-hold} è composto da un campionatore ideale seguito da un filtro con risposta impulsiva costante per un intervallo $\tau$ e quindi da un filtro equalizzatore con funzione di trasferimento $H_{e}(f) = \frac{1/\tau}{\sinc(f\tau)}$ \begin{equation} z(t) = \left( x(t) \sumI{n}\delta(t-nT_{c}) \right)
\conv \rect{t-\tau/2}{\tau} \conv h_{e}(t)
\end{equation} \begin{displaymath} Z(f) = \left( X(f) \conv \sumI{k} \delta(f-kf_{c}) \right)
\frac{\tau}{T_{c}} \sinc(f\tau) \e{-j\pi f\tau} \frac{\frac{1}{\tau}}{\sinc{f\tau}}
\end{displaymath}
===Interpolazione}
Esistono vari metodi per ricostruire a partire dai campioni $x(nT_{c})$ il segnale $x(t)$;
indichiamo con $x'(t)$ il segnale ricostruito
Il \emph{teorema del campionamento} (o teorema di Shannon) afferma che è possibile ricostuire esattamente un segnale $x(t)$ a banda rigorosamente limitata $B_{x(t)}$ se i campioni $x(nT_{c})$ sono ricavati ad una frequenza di campionamento almeno doppia della banda del segnale (\emph{condizione di Nyquist}) \begin{equation} \mbox{se} \phantom{5} f_{c} \geq 2B_{x(t)} \phantom {30} \mbox{allora} \phantom{5} \TCFI{\rect{f}{2B_{x(t)}}\TDF{x(nT_{c})}} = x(t) \end{equation}
un campionamento che non rispetta la condizione di Nyquist causa un errore di \emph{aliasing}, ovvero le repliche dello spettro del segnale si sovrappongono e diventano indistinguibili
Un \emph{filtro iterpolatore} $h_I(t)$ è un SLS che compie l'operazioe di interpolazione del segnale campionato \begin{equation} x'(t) = z(t) \conv h_I(t) \end{equation}
====Interpolatore cardinale} \`E possibile a livello teorico ricostruire esattamente senza approssimazioni un segnale (ovvero $x'(t) = x(t)$) se si filtra il segnale campionato con un \emph{interpolatore cardinale} che è un sistema con risposta \begin{equation} H_{IC}(f) = T_{c}\rect{f}{f_{c}} \phantom{30} h_{IC}(t) = \sinc t f_{c} \end{equation} (ovvero un sistema non causale).
In questo modo il segnale in uscita è \begin{displaymath} x'(t) = \sum _{n = -\infty} ^{+\infty}
x(nT_{c}) \sinc \left( \frac{t - nT_{c}}{T_{c}} \right) = x(t)
\end{displaymath}
poiché (????) \begin{displaymath} \TCFI{\rect{f}{f_{c} \TDF{x(nT_{c})}}} \end{displaymath}
====Interpolatore a mantenimento} (o \emph{interpolatore di ordine 0}) utilizza l'impulso interpolante \begin{equation} h_{I0}(t) = \rect{t-\frac{T_{c}}{2}}{T_{c}} \phantom{30} H_{I0}(f) = T_{c} \sinc (fT_{c}) \e{-j2\pi f \frac{T_{c}}{2}} \end{equation}
per ridurre l'aliasing che si genera si fa seguire da un \emph{filtro anti-aliasing} passa-basso di banda $B_{aa}$ che viene scelta in genere un po' maggiore della banda del segnale originario (visto che il filtro passa basso non sarà ideale) \begin{equation} H_{aa}(f) = \rect {f}{2\B_{aa}} \end{equation}
====Interpolatore lineare} (o \emph{interpolatore di ordine 1}) utilizza l'impulso interpolante \begin{equation} h_{I1}(t) = \tri{t}{T_{c}} \phantom{30} H_{I1}(f) = T_{c} \sinc^{2} (fT_{c}) \end{equation} l'errore di aliasing che si genera in questo modo è meno pronunciato rispetto all'interpolatore a mantenimento, ma si può utilizzare comunque u filtro anti-aliasing
===Trasformata di una sequenza}
Quando si calcola numericamente la trasformata di un segnale non è possibile fare una somma infinita di termini,
quindi considera il segnale ristretto ad $N$ campioni,
calcolando quindi la trasformata finita di Fourier della sequenza
(??????)
moltiplicato per una \emph{finestra}
$w_{r}=(iT_{c})$
che restringe il segnale ad N campioni
la finestra più semplice è
\begin{equation}
w_{r}(iT_{c}) = \drect{n}{N} \phantom{30}
|W_{r}|(f+if_{c}) = \left| \frac{\sin(N\pi f T_{c})}{\sin(\pi f T_{c})} \right|
\end{equation}
la cui trasformata ha una forma a lobi simile ad una $\sinc(\cdot)$
con un lobo centrale elevato e due lobi laterali;
è conveniente che il lobo centrale sia più stretto possibile e che i lobi laterali siano più bassi possibile,
per evitare
\begin{itemize}
\item
\emph{perdita di definizione}, due delte di dirac a frequenze vicine non sono distinguibili
\item
\emph{leckage}, interferenza di una componente sull'altra
\end{itemize}
per ridurre questi problemi si utilizza una finestra più complessa,
detta \emph{finestra di Kaiser}
\begin{equation}
w_{k}(nT_{c}) = \left\{ \begin{array}{cl}
I_{0} \left( \beta
\left( \sqrt{ 1 - \left( \frac{n-\alpha}{\alpha} \right)^{2} } \right) \right)&
\mbox{per $0 \leq n \leq N-1$} \\
0 & \mbox{altrove} \\
\end{array} \right.
\end{equation}
dove $I_{0}$ è la funzione di Bessel modificata di ordine 0, $N$ è il numero dei campioni, $\alpha = \frac{N-1}{2}$, $\beta$ è un parametro che varia la forma della finestra
Variando i due parametri $N$ e $\beta$ è possibile regolare la larghezza del luogo principale per ottenere una migliore definizione e il rapporto tra l'altezza del lobo principale e dei lobi laterali (SLL, \emph{side lobe level}) per evitare interferenze \begin{itemize} \item aumentando $\beta$ si cambia la forma della finestra, allargando il lobo centrale ed aumentando il SLL, per $\beta=0$ la finestra diventa rettangolare \item fissato $\beta$ all'aumentare di $N$ si diminuisce la larghezza del lobo centrale lasciando il SLL invariato \end{itemize}
Per evitare che il campionamento causi perdita eccessiva di informazione sulla forma dello spettro, si esegue un operazione di \emph{zero padding}, aggiungendo una serie di $0$ alla finestra
Filtraggio numerico
Un filtro numerico ha risposta impulsiva $h(nT_{c})$ (o $h[n]$, con $N_{h}$ campioni) che può corrispondere alla risposta impulsiva di un filtro naturale campionata con frequenza di campionamento $f_{c}$; se consideriamo $x(nT_{c})$ (con $N_{x}$ campioni) il segnale in ingresso al filtro e $y(nT_{c})$ (che sarà di $N_{y} = N_{x} + N_{h} - 1$ campioni) il segnale in uscita al filtro allora si ha che \begin{equation} y(nT_{c}) = x(nT_{c}) \cconv{N_{y}} h(nT_{c}) \end{equation} se i due vettori $x[n]$ e $h[n]$ sono composti da poche componenti la valutazione della loro convoluzione è conveniente (ha complessità $N^{2}$), altrimenti è possibile avvalersi della trasformata finita di Fourier per diminuire la complessità dell'operazione; si considera in questo caso $x[n]$ e $h[n]$ estesi a $N_{y}$ componenti (si compie una operazione di \emph{zero padding} aggiungendo componenti nulle ai due vettori) e quindi \begin{equation} y[n] = \TFFI{ \TFF{x[n]} \cdot \TFF{h[n]} } \end{equation} ovvero, operativamente. \begin{enumerate} \kn,.m /.