Matlab功率谱分析

Matlab power spectrum analysis

我想重现此图像,但要使用我自己的 EEG 数据。 据我了解,这是对过滤后的数据进行的功率谱分析。

我用 DC 放大器(低:DC;High:200)以 1000Hz 的采样率记录了 EEG 信号。我的数据是:68(电极)x 185080(数据点)。

我尝试使用以下代码:http://uk.mathworks.com/help/signal/ug/psd-estimate-using-fft.html

 Fs = 1000;
 t = 0:1/Fs:1-1/Fs;
 x = Data;
 %x = cos(2*pi*100*t) + randn(size(t));

 N = length(x);
 xdft = fft(x);
 xdft = xdft(1:N/2+1);
 psdx = (1/(Fs*N)) * abs(xdft).^2;
 psdx(2:end-1) = 2*psdx(2:end-1);
 freq = 0:Fs/length(x):Fs/2;
 plot(freq,10*log10(psdx))
 grid on
 title('Periodogram Using FFT')
 xlabel('Frequency (Hz)')
 ylabel('Power/Frequency (dB/Hz)')

但这是我得到的:

我很难理解如何继续进行以获取对我的 EEG 信号的分析,如第一张图片所示。非常感谢任何帮助。

下面是一个简单示例,说明如何在没有 DSP 工具箱的情况下使用 fft 从头开始​​执行 PSD:

%this does not include any filtering

x = [0:0.01:pi];
y = sin(100*x);
nfft = 2^nextpow2(length(y));
Fs = 100;

psd1 = abs(fft(y,nfft)).^2/length(y)/Fs;%compute the PSD and normalize

plot([0:50/(length(psd1)/2):50],psd1(1:length(psd1)/2+1))
xlabel('Frequency (Hz)');
ylabel('PSD');
grid on
title('PSD from FFT');

结果:

如果此方法产生的结果与您发布的类似,那么我认为其他人关于您的数据存在一些问题的评论可能是有效的。