首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab功率谱分析

Matlab功率谱分析
EN

Stack Overflow用户
提问于 2016-07-28 12:54:51
回答 1查看 1.4K关注 0票数 1

我想复制这个图像,但我自己的脑电图数据。据我所知,这是对滤波数据进行的功率谱分析。

我记录了脑电图信号的采样率为1000赫兹,用直流放大器(低:直流;高:200)。我的数据是: 68 (电极)x 185080 (数据点)。

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

代码语言:javascript
复制
 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)')

但我得到的是:

我正在努力理解如何继续,以获得分析我的脑电图信号,如在第一张图像。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-28 13:30:35

下面是一个简单的示例,说明如何从零开始使用fft实现PSD,而不使用DSP工具箱:

代码语言:javascript
复制
%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');

结果:

如果这种方法的结果与你发布的类似,那么我认为其他人关于你的数据有一些问题的评论可能是正确的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38637010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档