2013-12-10 334 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描述所有可以使用的功能和示例。它具有附加功能(例如,一致性),但是如果您喜歡,您可以忽略它並簡單地提取光譜數據。