2013-12-10 284 views
0

我有一个EMG信号,想要在定义的频率空间中得到幅度的平均值。我试过做FFT,但我没有得到幅度和频率的矢量。我是Matlab新手 - 请帮忙。EMG信号中的平均幅度值

+0

请显示您已有的一些代码。 – fuesika

回答

1

这里是你怎么能够让功率(即振幅)和频率从FFT功能在Matlab:

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并对其进行平均。

与其使用fft函数,您可能要考虑在Matlab Signal Processing Toolbox中使用pwelch函数。它允许您设置窗口大小,窗口重叠量等。

或者,您可以使用由David Halliday编写的非常流行的Neurospec Matlab工具箱。它有一个PDF描述所有可以使用的功能和示例。它具有附加功能(例如,一致性),但是如果您喜欢,您可以忽略它并简单地提取光谱数据。