【问题标题】:Mean amplitude value in EMG signalEMG 信号中的平均幅度值
【发布时间】:2013-12-27 16:34:11
【问题描述】:

我有一个 EMG 信号,并想在定义的频率空间中获得幅度的平均值。我尝试制作 FFT,但我没有得到具有幅度和频率的向量。我是 Matlab 的新手-请帮忙。

【问题讨论】:

  • 请出示一些您已经拥有的代码。

标签: matlab signal-processing


【解决方案1】:

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

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 信号进行频谱分析时,我们试图逼近真实频谱。这就是 EMG 通常被分成数据窗口的原因。在这些窗口中的每一个上执行 FFT 并取平均值。

您可能需要考虑使用 Matlab 信号处理工具箱中的 pwelch 函数,而不是使用 fft 函数。它允许您设置窗口大小、窗口重叠量等。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2021-04-15
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多