Segnali tempo-discreti
Introduzione
Section titled βIntroduzioneβClassificazione di Segnali
Section titled βClassificazione di SegnaliβIl segnale Γ¨ una grandezza fisica rappresentata da una funzione di una o piΓΉ variabili a cui Γ¨ associato un contenuto informativo.
Ad esempio, un segnale acustico Γ¨ rappresentato dalla funzione pressione dellβaria che varia nel tempo. Un segnale elettrico Γ¨ dato dalla corrente che varia nel tempo
Un esempio di segnale multidimensionale Γ¨ il monitor di un computer. Lβimmagine statica (frame) in B/W (black/white) Γ¨ associata ad un valore di intensitΓ luminosa punto per punto. Dato uno spazio bidimensionale, si devono descrivere tutti i livelli di intensitΓ luminosa: la funzione Γ¨ in due variabili (asse orizzontale e verticale). Per passare da unβimmagine statica ad una dinamica, si deve aggiungere la variabile temporale: dove la terza dimensione Γ¨ data dal tempo che scorre.
Inoltre, se si vuole passare da B/W ad RGB (red, green, blue) per apprezzare i colori punto per punto del frame, bisogna operare una trasformazione:
Segnali Monodimensionali
Section titled βSegnali MonodimensionaliβIl segnale Γ¨:
- tempo-continuo se , ovvero se ,
- tempo-discreto se , ovvero se .
Inoltre, in base al codominio B, il segnale β Γ¨:
- a valori reali (continui) se
- a valori discreti se
Ad esempio, un segnale analogico Γ¨ tempo-continuo e a valori continui (reali); mentre un segnale digitale Γ¨ tempo-discreto e a valori discreti. Inoltre, per non lasciare spazio ad ambiguitΓ , i segnali tempo-discreti si esprimono nella forma con β che sostituisce la lettera t per convenzione.
I segnali possono essere anche a valori complessi: . Questa casistica Γ¨ assimilabile, seppur con piΓΉ complessitΓ , ai segnali a valori reali. Si ricorda che . Un numero complesso con parte immaginaria nulla Γ¨ un numero reale.
Esempio: un segnale binario Γ¨ tempo-discreto a valori discreti con .
Dato il codice MATLAB che segue:
function binary_signalfigure;N = 5;n =-2*N:2*N;y = rand_binary_gen(length(n));stem(n,y, LineWidth=1.5)grid onset(title('Esempio di segnale binario'),'FontSize',16);ylim([-0.1 1.1])% xlim([-0.5 0.5])hold offend
% num parameter defines the number length of the 1D array% or random integer elements (between 0 and 1) to generatefunction y = rand_binary_gen(num) % randi([0,1]) --> random integer between 0 and 1 y = randi([0 1], 1, num);end
Si ottiene il grafico:
Operazioni su segnali tempo-discreti
Section titled βOperazioni su segnali tempo-discretiβLe operazioni su segnali tempo-discreti si possono comparare alle stesse applicate sui segnali tempo-continui.
Lβoperazione analoga alla derivata Γ¨ lβincremento.
Lβoperazione analoga allβintegrazione Γ¨ la sommatoria.
Il campionamento Γ¨ la serie di operazioni che permettono di rappresentare segnali tempo-continui in segnali tempo-discreti. Lβoperazione inversa del campionamento Γ¨ lβinterpolazione.
Campionamento
Section titled βCampionamentoβDato un segnale tempo-continuo . Campionare significa definire un segnale tempo-discreto estraendo i valori che β assume ad istanti di tempo equidistanti.
Le operazioni necessarie per effettuare il campionamento sono:
- definire il periodo di campionamento T
- definire la sequenza discreta di valori
- porre in corrispondenza gli assi temporali tempo-continuo e tempo-discreto
Posto per far coincidere i segnali, allora:
A livello pratico, il campionamento Γ¨ effettuato da convertitori A/D (analogico/digitale) pilotati da un segnale di clock impostato alla frequenza .
Il convertitore A/D Γ¨ un campionatore reale e fornisce una rappresentazione finita del segnale campionato:
In aritmetica binaria, il numero di cifre (bit) usate per la rappresentazione degli elementi di varia da 8 a 16.
Un campionatore ideale estrae valori con infinite cifre decimali:
Lβerrore racchiuso nella rappresentazione della sequenza Γ¨ detto errore di quantizzazione. In questo articolo si suppone che le operazioni di campionamento siano sempre ideali.
La trasformata di Fourier di una sequenza ottenuta mediante campionamento di un segnale tempo-continuo Γ¨ la periodicizzazione della trasformata di Fourier del segnale tempo-continuo. Il periodo di ripetizione ha frequenza uguale alla frequenza di campionamento.
Dimostrazione leggera del Campionamento
Section titled βDimostrazione leggera del CampionamentoβDato il seguente segnale tempo-continuo e , si applica un campionamento in frequenza, passando come argomento di Y:
Dato il segnale , allora:
La proprietΓ di dualitΓ implica:
Condizione di Nyquist
Section titled βCondizione di NyquistβLβerrore di aliasing porta ad una distorsione del segnale campionato . Questo errore Γ¨ dovuto dalle repliche dello spettro-base, ovvero gli alias, che vanno a sommarsi introducendo la distorsione.
Se il segnale di partenza ha banda limitata, si puΓ² garantire lβassenza di aliasing grazie alla condizione di Nyquist:
Con frequenza di campionamento.
permette di ricostruire un segnale tempo-continuo a partire dai propri campioni tempo-discreti.
Per un segnale radio digitale kHz
e dunque:
Per poter essere trasmesso e ricostruito correttamente, un segnale radio puΓ² avere una banda larga al massimo kHz
.
Filtraggio anti-aliasing
Section titled βFiltraggio anti-aliasingβSe , Γ¨ opportuno applicare un filtraggio anti-aliasing (passa-basso ideale) al segnale tempo-continuo in ingresso prima di effettuare il campionamento.
Questo filtro Γ¨ in grado di eliminare piccoli disturbi fuori banda del segnale.
Esempio:
Nel dominio delle frequenze si possono apprezzare due in corrispondenza di :
function es_cos_aliasing% given x[n]=cos(2*pi*f0*n*T)=x(nT)N = 10; % durata sul semiasse positivof0=2;T=0.8;
f = linspace(-N, N, 1001); % vettore tempo-continuot = f;n =-N:1:N; % vettore tempo-discreto
x_n = cos(2*pi*f0*n*T);x_t = cos(2*pi*f0*t);Xf = 0.5 * (dirac_delta(f-f0)+dirac_delta(f+f0));overXf = (1/(2*T)) * (dirac_delta(f-f0)+dirac_delta(f+f0));
figure(1)plot(f,overXf,LineWidth=1.5)hold onplot(f,Xf,LineWidth=1.5)grid onylim([-0.2 0.6])xlim([-2.2 2.2])legend([{'$\overline{X}(f)$'},{'$X(f)$'}],'Interpreter','latex', 'FontSize', 22)title('Dominio delle frequenze')hold off
figure(2)plot(t,x_t,LineWidth=1.5)hold onstem(n,x_n,LineWidth=1.5)grid onylim([-1.1 1.1])xlim([-2 2])legend([{'$x(t)$'},{'$x[n]$'}],'Interpreter','latex', 'FontSize', 22)title('Dominio temporale')hold off
end
% return a Dirac function without discontinuityfunction y = dirac_delta(x) y = dirac(x); idx = y == Inf; % find Inf y(idx) = 1; % set Inf to finite valueend
Interpolazione
Section titled βInterpolazioneβIl segnale tempo-continuo interpolato si indica con . Esistono diversi tipi di interpolazione in base allβimpulso di interpolazione utilizzato.
Lβinterpolatore ideale Γ¨ detto interpolatore cardinale. Nel campo delle frequenze Γ¨ un rettangolo di altezza unitaria e larghezza pari a T e, nel dominio temporale, Γ¨ dunque un seno cardinale:
Usando questo interpolatore, non cβΓ¨ bisogno di applicare un equalizzatore (come si vedrΓ in seguito). Il segnale di partenza si ottiene direttamente con la formula:
A livello pratico, lβinterpolatore cardinale puΓ² solo essere approssimato.
function es_cos_interpolation% given x[n]=cos(2*pi*f0*n*T)=x(nT)N = 10; % durata sul semiasse positivof0=2;T=0.8;
f = linspace(-N, N, 1001); % vettore tempo-continuot = f;n =-N:1:N; % vettore tempo-discretox_n = cos(2*pi*f0*n*T);
% 1-D interpolation: https://www.mathworks.com/help/matlab/ref/interp1.htmlhat_x = interp1(n,x_n,t);hat_x_sp= interp1(n,x_n,t,"spline");hat_x_p= interp1(n,x_n,t,"previous");
%x_t = cos(2*pi*f0*t);%Xf = 0.5 * (dirac_delta(f-f0)+dirac_delta(f+f0));%overXf = (1/(2*T)) * (dirac_delta(f-f0)+dirac_delta(f+f0));
%sum_x_n = my_sum(N, f0, t, T);
% hat_x = sum_x_n .* p_t(t-T, T);
plot(n,x_n,'o',LineWidth=1.5)hold onplot(t,hat_x,LineWidth=1.5)hold onplot(t,hat_x_sp,LineWidth=1.5)hold onplot(t,hat_x_p,LineWidth=1.5)grid onylim([-1.1 1.1])xlim([-2 2])legend([{'$x[n]$'}, 'linear', 'spline', 'previous'],'Interpreter','latex', 'FontSize', 22)title('Different interpolation methods')hold off
end
%function y = my_sum(sum_limit, f0, t, T)% domain=-sum_limit:1:sum_limit;% i = 1; % inizializzazione dell'indice del ciclo for% y = zeros(1,length(domain));% for m = -sum_limit:1:sum_limit % k va da -n ad n con uno step di 1% y(i) = cos(2*pi*f0*m*T)* p_t(t(i)-(m*T), T);% fprintf("»»» %d) y = %.2f\n", m,y);% i=i+1; % incremento dell'indice% end%end
% interpolation_impulse%function y = p_t(x,T)% y = rect((x-(T/2))/T);%end
% by using x(abs(x)<=1) inside the indexing operation (on the left), you% ensure that both sides of the assignment have the same dimensions.%function y = rect(x)% y=zeros(1, length(x));% y(abs(x) < 1/2) = 1;% y(abs(x) == 1/2) = 1/2;%end
Ricostruzione di un segnale
Section titled βRicostruzione di un segnaleβLβobiettivo del paragrafo Γ¨ illustrare la ricostruzione di un segnale tempo-continuo a partire dai suoi campioni .
I passaggi completi, illustrati nel dettaglio in seguito, sono:
- interpolazione
- filtraggio passa-basso ideale
- equalizzazione (opzionale)
Risulta piΓΉ corretto (e comodo) ragionare nel dominio delle frequenze.
Date le trasformate di Fourier:
Si puΓ² affermare che esiste la seguente relazione:
N.B. T Γ¨ il periodo di campionamento.
Dato lβimpulso di interpolazione ed il segnale tempo-continuo interpolato e date le corrispondenti trasformate di Fourier:
La trasformata del segnale interpolato Γ¨ data dalla formula:
Successivamente si applica un filtro passa-basso ideale con banda β.
La riposta in frequenza del filtro Γ¨:
Supponendo che la banda sia limitata: . Lβaliasing si risolve rispettando la condizione di Nyquist. Il filtro passa-basso serve per eliminare le repliche distorte.
Tale filtro fornisce in output il segnale :
La sommatoria che definisce viene filtrata e passa solo lβelemento posto sullβorigine ().
Per togliere la distorsione si applica infine unβequalizzazione: moltiplicazione pari allβinverso di .
La risposta in frequenza del blocco equalizzatore Γ¨:
Dal blocco equalizzatore si ottiene , ovvero la trasformata di Fourier del segnale che si voleva ricostruire:
I passaggi completi sono:
Queste formule dimostrano il teorema di Shannon sul campionamento.
Inoltre, si possono porre e in cascata per produrre il filtro equalizzatore :
Si deve fare molta attenzione a garantire i seguenti vincoli:
I sistemi monodimensionali tempo-discreti sono approfonditi nellβarticolo Sistemi Fisici.