如何分离代表不重要数据的重要数据的序列?
一些 背景和示例: 正如在数据图中可以看到的那样(图 - 参见链接),这个时间序列中有9个部分,用IMU记录(测量加速度 - x,y,z,围绕x,y,z的方向旋转) 。该图可以在以下链接中找到:
Figure: Snipping gesture acceleration x,y,z
情节依赖的数据:Data.csv
在这种情况下,这些代表右手的剪切动作。在每个信号之间存在延迟(2-3秒)。这种延迟也可以延长
哪种方法最容易细分?我在哪里可以找到这些示例或者您能给我一个简单的例子吗? 我想知道什么?:相关信号的起点在哪里?
之后,这些片段将用作手势分类器的训练示例。
[可选附加信息:录制环境:手松动 - >手势得到执行 - >手松散 - >在松臂位置等待5秒 - > [记录手势的下一次迭代]。 另一个重要条件是我需要分割不同类型的手势(信号看起来不同),不仅是剪切手势,还可以向上滑动,向下滑动或竖起拇指。]
非常感谢您提前:))
迎接Max
答案 0 :(得分:2)
有一些可能的解决方案: DBSCAN example here 要么 DTW example here方法。
此外,您可以手动执行此操作(例如Matlab m-file)。 这里:axaR是来自加速度计的信号(沿x轴),k - 点数,阈值 - 手动可调整值
figure (100)
for fig = 1: 5
k = 200;
threshold =20*fig*std(axaR);
fprintf('window size %d, threshold is %f\n', k,threshold)
for i = 1: (length(axaR)-k)
summa = 0;
for j= 1:k
summa = summa + abs(axaR(i+j));
end
if (summa > threshold)
c(i) = 1;
else
c(i) = 0;
end
end
subplot(5,1,fig)
plot ( axaR, 'LineWidth', lw), hold on
plot(1:k,ones(k,1),'*r')
hold on,
plot ( c, 'LineWidth', lw),
hold on,
xlim([0,5000]),
title (strcat('threshold ', num2str(threshold), 'window size', num2str(k) ))
end
Matlab figure that illustrates the algorithm
这是行走分析的例子,它是完全基于直觉的方法,如果你知道任何数学或物理背景,请不要犹豫,分享它。
最佳
答案 1 :(得分:1)
“如何分离代表不重要数据的重要数据的序列?” 你的问题不明确。什么是“重要的”是主观的,而不是数据固有的。
但是,如果要构建分类器,可以将问题重新设置为“最保守的子序列是什么?”。您可以回答:
[matrixProfile,profileIndex,motifIndex,discordIndex] = interactiveMatrixProfileVer2(ay,250); (代码在http://www.cs.ucr.edu/~eamonn/MatrixProfile.html)
免费答案 2 :(得分:0)
如果你想手动分割数据(监督学习),我遇到了同样的问题,所以我创建了一个简单的python matplotlib库: https://github.com/XavierTolza/python-timeseries-segmenter