Trasformata di Fourier di dati importati

di il
1 risposte

Trasformata di Fourier di dati importati

Ciao a tutti. Sto avendo dei problemi nell'eseguire una trasformata di Fourier in Matlab. Spiego il problema, sperando che qualcuno possa aiutarmi (cosa certa dato che sono un utente inesperto di Matlab).

Il mio dato di partenza è un array di 266 elementi (detto y nel codice), che rappresenta la misura della pressione di un sensore di pressione al variare del tempo. Partendo quindi dal tempo zero, ogni numero corrisponde al valore della pressione al tempo t + DeltaT (intervallo temporale costante).
Ho cercato di fare la trasformata di fourier di questo segnale,in modo da capire a quali frequenze è concentrato il segnale.
Il problema è che non ho trovato nessuna frequenza rilevante del segnale (vedi Figura), a parte un picco alla frequenza = 0. Cosa significa?? C'è qualche errore nel codice oppure è proprio il segnale che porta a questo risultato?
NB: lo stesso codice lo ho usato per ottenere la trasformata di Fourier di un altro segnale, che rappresenta però la misura di un angolo (Pitch angle) nello stesso intervallo di tempo (rilevamenti piu fitti). In questo caso ho ottenuto una trasformata più sensata (vedi figura).

Ecco come ho fatto:

%%definisco intervallo dei tempi
Nsamples = length(y);
startTime = 0;
endTime = 64; %secondi

DeltaT = (endTime - startTime)/Nsamples;
t1 = startTime : DeltaT : endTime;
t = t1(1:Nsamples); %%così t e y hanno lo stesso numero di elementi

%% definisco i dati per effettuare la trasformata con fft
n = length(t) % number of samples
Ts = DeltaT; %sampling time interval
Fs = 1/Ts; %% frequency sampling rate

[YfreqDomain, freqRange] = positiveFFT(y,Fs);
%% la funzione positiveFFT non fa altro che prendere sollo le frequenze positive e trovae il corretto range di frequenze. Funzione trovata on-line già fatta.

figure
plot(freqRange, abs(YfreqDomain))


Ecco la funzione positiveFFT:

function [ X, freq ] = positiveFFT( x, Fs )

N = length(x);
k = 0: N-1;
T = N/Fs;
freq = k/T;
X = fft(x)/N;
cutOff= ceil(N/2);
X = X(1:cutOff);
freq=freq(1:cutOff);

end

Ecco l'array y:

-38.9824
-41.3985
-42.9517
-40.1905
-44.6775
-43.2969
-34.7830
-46.9210
-48.1866
-50.1425
-60.8424
-44.6775
-40.8233
-38.9249
-46.0581
-45.4829
-46.6909
-43.2969
-48.1291
-52.9038
-54.2269
-48.8194
-42.8942
-39.9028
-47.5538
-56.2978
-44.8501
-42.3189
-43.9297
-46.0006
-44.8501
-48.0140
-46.4033
-37.3717
-51.9834
-37.6593
-35.8760
-42.6066
-34.7255
-37.8319
-37.8894
-36.5663
-40.1329
-40.7657
-31.6191
-46.2307
-40.5932
-35.4733
-34.3228
-23.9106
-34.3803
-35.8760
-40.5356
-33.1723
-38.1195
-32.5395
-32.2519
-34.4379
-34.7255
-40.0179
-34.5529
-37.5443
-33.2873
-36.5088
-31.2164
-36.3937
-31.1013
-28.2825
-34.0352
-27.1320
-33.0572
-33.8051
-36.8540
-29.4331
-25.8089
-24.0256
-24.4858
-18.5606
-21.8971
-19.8262
-23.5654
-33.2298
-29.7782
-32.0793
-33.3449
-40.0754
-31.7916
-27.1320
-25.0036
-24.8310
-19.9412
-25.2912
-28.4551
-39.6727
-36.1636
-40.8233
-27.5922
-28.8578
-32.0793
-29.6056
-32.3094
-29.8358
-29.3755
-35.5884
-22.1848
-30.8137
-34.3228
-35.0131
-37.3142
-41.3410
-42.0888
-31.7341
-34.6104
-29.4906
-38.2921
-40.5932
-38.2346
-31.2164
-43.2394
-39.3851
-37.7744
-39.7878
-39.1550
-40.0754
-41.3985
-42.8942
-46.2883
-41.1684
-41.4561
-38.6373
-39.7878
-44.5049
-38.3496
-36.7964
-43.6420
-33.2873
-20.6316
-23.1052
-30.6411
-40.2480
-32.9422
-44.8501
-41.9163
-46.8060
-48.6468
-47.2087
-42.6641
-41.9738
-37.6018
-40.7082
-40.4206
-44.3324
-36.7389
-47.4963
-44.6775
-49.2221
-38.7523
-51.1205
-44.2173
-40.5932
-36.7964
-34.2653
-37.6018
-36.7964
-30.9863
-30.5836
-38.5797
-48.0140
-32.8846
-35.8760
-27.5922
-30.1809
-37.1991
-35.9911
-37.0265
-40.4206
-28.2250
-46.1732
-26.8444
-30.3535
-33.9776
-32.9422
-26.9594
-37.7168
-34.2653
-29.0304
-35.8760
-32.4244
-28.6852
-29.2605
-39.6727
-35.3583
-38.0045
-41.7437
-39.2701
-50.7178
-48.4743
-37.5443
-40.1905
-42.1464
-40.1905
-40.8233
-41.1684
-41.1684
-37.3717
-38.1771
-40.8233
-40.6507
-38.9249
-33.0572
-42.0888
-35.9911
-30.7562
-29.6056
-43.1818
-32.8846
-32.7696
-36.9115
-33.2873
-41.5136
-35.5884
-36.2787
-39.3276
-28.9153
-33.8626
-27.8223
-28.2825
-26.0966
-27.1895
-28.6277
-28.5127
-22.9326
-26.4417
-23.7380
-32.1943
-39.6152
-32.5395
-34.7830
-33.4024
-37.6593
-35.5309
-15.9144
-38.1771
-42.4915
-38.0045
-39.6152
-37.4292
-32.3669
-30.1809
-27.0745
-31.9067
-25.8664
-27.1320
-33.2873
-30.5836
-29.0304
-29.9508
-37.9470
-28.0524
-14.3612
-26.3842
-22.8176
-21.9547
-28.1100
-24.0831
-21.6670

Vi ringrazio della disponibilità per chi riuscisse ad aiutarmi.

Dario
Allegati:
Trasformata del pitch angle
Trasformata del pitch angle

Trasformata dell'array y
Trasformata dell'array y

1 Risposte

  • Re: Trasformata di Fourier di dati importati

    Non so come ma incredibilmente stavo per fare la stessa domanda... Salve a tutti sono nuovo del forum e vorrei chiedere esattamente la stessa cosa sperando che qualcuno ci possa dare una risposta.
Devi accedere o registrarti per scrivere nel forum
1 risposte