Grazie alla trasformata di Fourier è possibile determinare la banda di un segnale, ovvero come un segnale si decompone nelle sue componenti spettrali.

Nel caso di segnali campionati, la trasformata di Fourier prende il nome di DFT (Discrete Fourier Transform) e viene calcolata (da Matlab) con la formula:

dove i è l'unità immaginaria. In Matlab la funzione che svolge automaticamente questa operazione è fft().

Prima di procedere con un esempio è importante sapere che se il vettore x contiene i campioni xn del segnale del quale desideriamo trovare la DFT e inoltre

  • N è il numero di campioni a nostra disposizione
  • Fc è la frequenza di campionamento (quindi Tc=1/Fc è il periodo di campionamento)

il calcolo della DFT porterà a conoscere lo spettro X con le seguenti caratteristiche:

  • una risoluzione in frequenza f = Fc/N
  • in una banda tra 0 e Fc/2

Per esempio, se abbiamo 200000 campioni di un segnale campionato con frequenza Fc = 44100 Hz (cioè con un periodo di campionamento Tc≈22.68 μs) la sua DFT ci dirà come è fatta la sua banda tra 0 e  22050 Hz con una risoluzione in frequenza di  0.2205 Hz.

Esempio

L'm-file che segue mostra come si può generare un tono (stereo) di prova a 1 KHz, lo si può visualizzare e lo si può sentire tramite le casse del PC:


clear;
close all;

Fc = 44100; % Frequenza di campionamento (44100 Hz)
F = 1000; % Frequenza del tono generato (1 KHz)

t = (0:1/Fc:(200000-1)/Fc).'; % Asse dei tempi con 200000 campioni (vettore colonna)
xm = sin(2*pi*F*t); % Generazione tono monocanale (vettore colonna)
x = [xm xm]; % Generazione tono stereofonico (matrice con 2 colonne)

figure;
subplot(2,1,1);
plot(t,x(:,1));
ylabel('Canale SX');
subplot(2,1,2);
plot(t,x(:,2));
xlabel('Tempo [secondi]');
ylabel('Canale DX');

sound(x, Fc); % Suona nella periferica audio

Il grafico generato è il seguente:

Prima di procedere si osservi come deve essere generato l'asse dei tempi per garantire la corretta frequenza di campionamento.

Per quanto riguarda un suono stereofonico, la prima colonna della matrice x che contiene i campioni è il canale sinistro, la seconda il canale destro.

La funzione sound(x, Fc) invia la matrice dei campioni x alle casse del PC; come secondo argomento è necessario inserire il valore della frequenza di campionamento.

La seguente porzione di codice, che deve essere aggiunto all'm-file precedente, calcola la fft e la visualizza:

X = fft(x);                  % Calcolo della fft
[Ncampioni Ncanali] = size(X);
X = 1/Ncampioni*fftshift(X); % Sistemazione della fft e correzione dell'ampiezza
P = abs(X); % Modulo della fft

dF = Fc/Ncampioni;
f = -Fc/2:dF:Fc/2-dF; % Asse delle frequenze

figure;
subplot(2,1,1);
plot(f,P(:,1));
ylabel('Spettro canale SX');
subplot(2,1,2);
plot(f,P(:,2));
xlabel('Frequenza [Hz]');
ylabel('Spettro canale DX');

Lo spettro del segnale è qui sotto riportato:

Per quanto riguarda la sistemazione della fft tramite l'operazione fftshift e la correzione dell'ampiezza, si rimanda all'help di Matlab (https://it.mathworks.com/help/matlab/fourier-analysis-and-filtering.html) e ai testi specialistici come  Oppenheim, Alan V.; Schafer, R. W.; and Buck, J. R., Discrete-time signal processing, Upper Saddle River, N.J., Prentice Hall, 1999, ISBN 0-13-754920-2.

Si osservi anche come deve essere costruito l'asse delle frequenze.

Relativamente alla trasformata di Fourier e alla trasformata di Fourier discreta (DFT) si osserva che i valori ottenuti sono complessi e nello spettro è stato disegnato il modulo delle ampiezze (si potrebbe disegnare anche il valore del modulo elevato al quadrato realizzando quello che viene chiamato periodogramma). Per stimare modulo e fase della trasformata per valori specifici si potrebbero usare le funzioni Matlab abs e angle.

Approfondimenti

Il campionamento è soggetto al teorema di Nyquist-Shannon (conosciuto anche come teorema del campionamento) il quale garantisce che l'operazione di campionamento è corretta se la frequenza di campionamento è almeno 2 volte la banda (frequenza massima) del segnale campionato.

Nel caso del campionamento audio, la frequenza di campionamento di 44100 Hz rispetta questo vincolo perché la frequenza massima udibile dall'orecchio umano è inferiore ai 20000 Hz.

Ulteriori approfondimenti sul teorema di Shannon possono essere trovati  su Wikipedia all'indirizzo https://it.wikipedia.org/wiki/Teorema_del_campionamento_di_Nyquist-Shannon.

Se si volesse approfondire la teoria dei segnali una risorsa online è disponibile all'indirizzo https://teoriadeisegnali.it/libro/html/html/index.html

Last modified: Tuesday, 2 January 2024, 11:04 PM