Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Integrazione calcolo numerico d'alessio
1. Integrazione di Calcolo Numerico
(3 CFU)
Elaborato: Fast Fourier Transform
Studenti:
Caserta Francesco (matr. M63/80)
Di Iorio Francesco (matr. M63/134)
Lora Laura (matr. M63/135)
2. Caserta Francesco (matr. M63/80) Integrazione di Calcolo Numerico
Di Iorio Francesco (matr. M63/134) Elaborato Fast Fourier Transform
Lora Laura (matr. M63/135)
Esercizio 1: Filtraggio di un segnale attraverso l’uso della FFT
Specifiche
Generare un segnale, introdurre un rumore, utilizzare la DFT e la IDFT per eliminare
il rumore e ottenere il segnale pulito.
Svolgimento
Si è scelto di generare il seguente segnale puro, espresso come combinazione
lineare di tre sinusoidi:
dove
.
Si è scelto quindi aggiungere il seguente segnale di rumore:
dove è la frequenza di tale rumore.
%Filtraggio del segnale
%Generazione del segnale
delta = 0.025; %passo di campionamento
T = 0.5; %periodo
t = 0:delta:T-delta;
N = length(t); %numero di campioni
FS = 1/delta; %frequenza di campionamento
y = sin(2*pi*2*t) + sin(2*pi*4*t) + sin(2*pi*6*t);
%segnale generato.
%introduzione del rumore
noise = 2*(sin(2*pi*10*t));
yr = y + noise; % segnale rumoroso
2
3. Caserta Francesco (matr. M63/80) Integrazione di Calcolo Numerico
Di Iorio Francesco (matr. M63/134) Elaborato Fast Fourier Transform
Lora Laura (matr. M63/135)
I parametri utilizzati per la definizione dei segnali sono i seguenti:
Periodo del segnale: T
Passo di campionamento:
Numero di campioni disponibili:
Frequenza di campionamento:
Frequenza di taglio del filtro passa basso:
%Applicazione della FFT
YR = fft(yr,N);
freq=(0:N/2)*FS/N;
stem(freq,abs(YR(1:N/2+1)));
YR(6:N-4) = 0; %filtro passabasso per le frequenze
inferiori a 6 Hz
y_filt = ifft(YR,N);
In figura 1 è mostrato il segnale
rumoroso sottoposto al filtro
passa basso. Tale segnale è
trasformato utilizzando
l’algoritmo Fast Fourier
Transform, che implementa in
Matlab la trasformata discreta di
Fourier. Attraverso la funzione
trasformata, è possibile plottare
lo spettro d’ampiezza (figura 2).
Figura 1 - Segnale rumoroso
3
4. Caserta Francesco (matr. M63/80) Integrazione di Calcolo Numerico
Di Iorio Francesco (matr. M63/134) Elaborato Fast Fourier Transform
Lora Laura (matr. M63/135)
Figura 2 - Frequenze del segnale rumoroso
Per eliminare il rumore si applicherà il filtro passa basso in grado di eliminare le
frequenze superiori ai 6 Hz.
In figura 3 è riportato il segnale privo di rumore aggiuntivo ottenuto con la funzione
‘ifft(X)’.
Figura 3 - Segnale filtrato
4
5. Caserta Francesco (matr. M63/80) Integrazione di Calcolo Numerico
Di Iorio Francesco (matr. M63/134) Elaborato Fast Fourier Transform
Lora Laura (matr. M63/135)
Esercizio 2: Analisi della concentrazione di CO2 nell’atmosfera
Specifiche
Analisi della concentrazione di CO2 (biossido di carbonio) nell’atmosfera (in parti per
milioni) misurato nell’osservatorio di Mauna Loa. Nel file co2 (load –ASCII co2.mat)
vi sono 216 valori, misurati ogni mese (matrice c02 con il tempo in I colonna ed i
valori in II). Effettuare il grafico del fenomeno, dello spettro ed il periodogramma
(omettendo la DC component). Determinare i due picchi di massima potenza ed il
corrispondente indice e periodo. Ricostruire il fenomeno con la IDFT, ponendo a
zero tutti i termini della DFT tranne la DC component e le due componenti relative
alla massima potenza, e fare un confronto con quello originale. Ricostruirlo
aggiungendo anche le successive due componenti di potenza maggiore. Cosa si
osserva? Come il fenomeno così ricostruito cattura i dati originali?
Svolgimento
In figura è rappresentato il grafico del fenomeno, plottato utilizzando il comando
matlab ‘plot(x,y)’:
%Rappresentazione del fenomeno
load -ASCII co2.mat
N = length(co2);
figure (1); plot(co2(:,1),co2(:,2));
axis([0 N min(co2(:,2)) max(co2(:,2))])
5
Figura 4 - Rappresentazione del fenomeno
6. Caserta Francesco (matr. M63/80) Integrazione di Calcolo Numerico
Di Iorio Francesco (matr. M63/134) Elaborato Fast Fourier Transform
Lora Laura (matr. M63/135)
Per rappresentare spettro d’ampiezza e periodogramma di potenza, è necessario
realizzare la trasformata discreta di Fourier attraverso l’algoritmo FFT.
%Rappresentazione spettro e periodogramma
X = fft(co2(:,2),N);
figure (2); stem(1:N-1,abs(X(2:N))); %spettro
pot = (abs(X(1:N))).^2/(N);
figure (3); stem(1:N-1,pot(2:N)); %periodogramma di potenza
Le figure qui di seguito riportate illustrano rispettivamente spettro d’ampiezza e
periodogramma di potenza attraverso il comando Matlab ‘stem(n,x)’.
Figura 5 - Spettro d'ampiezza
6
Figura 6 – Periodogramma di potenza
7. Caserta Francesco (matr. M63/80) Integrazione di Calcolo Numerico
Di Iorio Francesco (matr. M63/134) Elaborato Fast Fourier Transform
Lora Laura (matr. M63/135)
Per determinare i picchi di potenza massima si è scelto di utilizzare la funzione
Matlab ‘max(x)’, e sfruttando il suo risultato come strumento di indicizzazione del
vettore contenente i valori di potenza relativi alla trasformata discreta di Fourier.
Per calcolare il periodo sarà necessario calcolare la differenza tra gli indici di
occorrenza dei massimi nel vettore.
%Determinare indice dei picchi e loro periodo
massimo = find(pot==max(pot)); %trova gli indici dei picchi
di max potenza
periodo = massimo(2)-massimo(1); %trova il periodo
Per ricostruire il fenomeno si utilizzerà la funzione ‘ifft(X)’, azzerando
opportunamente i valori secondo quanto richiesto dalle specifiche.
%azzero tutti i valori di X tranne DC comp. e picchi di max
potenza
X(2:massimo(1)-1) = 0;
X(massimo(1)+1:massimo(2)-1)=0;
X(massimo(2)+1:N) = 0;
figure (4); stem(0:N-1,abs(X));
x = ifft(X, N);
figure (5);
subplot(1,2,1); plot(co2(:,1),co2(:,2)); axis([0 N -5 5]);
subplot(1,2,2); plot(co2(:,1),x); axis([0 N -5 5]);
In figura è rappresentato il confronto tra il fenomeno originale e la versione
elaborata dallo script Matlab.
7
Figura 7 - Confronto tra il fenomeno originale e quello elaborato
8. Caserta Francesco (matr. M63/80) Integrazione di Calcolo Numerico
Di Iorio Francesco (matr. M63/134) Elaborato Fast Fourier Transform
Lora Laura (matr. M63/135)
Elaborando il fenomeno, la versione modificata presenta una dinamica differente
compresa tra -2.6 e +2.6, eliminando quindi i picchi superiori a tali limiti.
Aggiungendo le successive due componenti di potenza maggiore, si nota che la
dinamica si amplia, avvicinandosi a quella del fenomeno originale.
Il fenomeno ricostruito non cattura quindi tutti i dati originali, ma soltanto la
maggior parte di essi, “mediando” tra i picchi massimi e quelli minimi.
Figura 8 - Confronto con l'aggiunta delle successive componenti di potenza massima
8