a problem with power spectrum calculation (FFT)
10 views (last 30 days)
Show older comments
Hi,
I try to calculate power spectrum of the brain EEG signal. There are 1000 samples, sampling rate is 250. I see a clear 50 Hz in this signal (attached). However, when I do FFT, I cannot see 50Hz but only power in the low frequecnies. What I am doing wrong? I attach my code and mat file.
Thak you a lot for the help!
Alex
0 Comments
Accepted Answer
Star Strider
on 8 Aug 2020
The mean of ‘data’ is -16657.4418730469. This is the D-C component, so it appears at 0 Hz, and completely prevents the details of the Fourier transform of the signal from being visible. I have no idea what the amplitude units are, however the 50 Hz peak is only 70.59, so , so it is completely hidden.
The solution is to first subtract the mean of ‘data’, then do the fft:
D = load('data_1000samples.mat');
data = D.data;
Fs = 250;
Fn = Fs/2;
L = numel(data);
t = linspace(0, 1, L)/Fs;
q1 = mean(data)
datam = data - mean(data);
FTdata = fft(datam)/L;
Fv = linspace(0, 1, fix(L/2)+1)*Fn;
Iv = 1:numel(Fv);
figure
plot(Fv, abs(FTdata(Iv))*2)
grid
producing:
And now the 50 Hz peak is clearly visible.
If you want to filter it out, that is straightfforward.
.
4 Comments
More Answers (0)
See Also
Categories
Find more on Spectral Measurements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!