首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >肌电信号的平均幅值

肌电信号的平均幅值
EN

Stack Overflow用户
提问于 2013-12-10 16:45:20
回答 1查看 2.7K关注 0票数 0

我有一个EMG信号,想要得到在定义的频率空间中振幅的平均值。我试着做FFT,但是我得不到一个有振幅和频率的向量。我是Matlab的新手-请帮助我。

EN

回答 1

Stack Overflow用户

发布于 2014-02-05 17:02:15

下面是如何从Matlab中的fft函数获得功率(即振幅)和频率:

代码语言:javascript
复制
fs = 1024; % sampling rate of signal
time = 1; % time in sec of simulated signal
xn = randn (fs*time,1); % creating random signal
nfft = time*fs; % size of window on which to perform FFT
Y = fft (xn, nfft); 
% Convert value to obtain the power of the signal at 
% each frequency
Pyy = Y .* conj(Y) / nfft;
% Create a frequency axis for ploting
fy = fs/nfft * (0:(nfft/2) -1);

plot (fy, Pyy(1:nfft/2))
ylabel ('power (AU)^2') % arbitrary units
xlabel ('frequency (Hz)')
xlim ([0 512])

但是,请记住,EMG不是平稳信号。在对肌电信号进行频谱分析时,我们试图近似真实的频谱。这就是为什么EMG通常被分成不同的数据窗口。对这些窗口中的每个窗口和平均窗口执行FFT。

与使用快速傅立叶变换函数相比,您可能需要考虑使用Matlab信号处理工具箱中的pwelch函数。它允许您设置窗口大小、窗口的重叠量等。

或者,您可以使用David Halliday编写的非常流行的Neurospec Matlab工具箱。它有一个PDF,描述了你可以使用的所有函数和示例。它有额外的功能(例如,一致性),但如果你愿意,你可以忽略它,简单地提取光谱数据。

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

https://stackoverflow.com/questions/20489734

复制
相关文章

相似问题

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