【发布时间】:2016-09-29 22:37:25
【问题描述】:
我正在使用 MATLAB 计算 EMG 信号的特征,方法是将 EMG 信号分割成 200 个样本的窗口,然后计算每个窗口的特征。
请帮助我尝试使用直方图功能。
我可以使用以下代码轻松地为一个数据窗口生成一个 bin 向量:
binCount = 9;
[histBins, ~] = histcounts(dataWindow, binCount);
但是,我正在进行的实验表明,直方图按照 3 个标准差 (sigma) 阈值分为 9 个 bin。我对阈值如何适应生成直方图箱感到困惑。
是否为每个数据窗口计算了一个 3 sigma 阈值,并且落在该阈值内的数据点用于生成直方图?示例伪代码:
for i = 1:numDataWindows
dataWindow = windows(i);
Calculate 3 standard deviations threshold using dataWindow
Get data points from dataWindow that fall within threshold
Generate histogram on data points within threshold
...
Store histogram bins for later use
end
或者是在开窗之前从整个数据信号生成 3 sigma 阈值,以便在生成每个直方图之前将相同的阈值应用于每个数据窗口?
【问题讨论】:
-
添加实验说明链接?
-
嘿@Dan。抱歉迟了回应。昨天和我的主管讨论了这个问题后,我们决定选择第一个选项。我正在查看的论文中的实验描述并不多,但我添加了一张图片来提供我的意思的视觉解释:imgur.com/tphJrP9。我将采用一个数据窗口并计算该窗口的 3 sigma 阈值。然后我将采用该范围内的信号(最顶部和最底部的虚线)并将直方图应用于信号的该部分。我将为每个数据窗口执行此操作。
-
那么您现在能回答这个问题还是仍然卡住了?
-
抱歉回复晚了。花了一段时间才有机会编写一些 MATLAB 代码来尝试一下。不,我不再被困住了。我将发布我正在使用的代码作为答案,因此任何其他有类似查询或可能替代建议的人都可以使用它
标签: matlab histogram feature-extraction threshold standard-deviation