【问题标题】:Algorithm to find a specific characteristic in a data set在数据集中查找特定特征的算法
【发布时间】:2012-02-02 03:02:12
【问题描述】:

我目前正在尝试使用 matlab 分析大型数据集(40 000 多个数据点)。这些数据集有很大程度的高频噪声,但幸运的是,与整体信号相比,噪声的幅度相对较小。

基本上,我想做的是找到数据集“启动”的点。我的意思是,它的梯度在一个小区域内发生了显着变化。但是,我正在分析的这些信号会受到“漂移”的影响,在“启动”点之前,信号斜率本质上可能是负的、中性的或正的,但是,“启动”之前和之后的图形形状up”点一般是一样的。

例如:“启动”点看起来像这样:

[1.25 2.5 3.75 5 7.5 12 21 36 49 64]

显然,这是一个大大简化的版本,但数据将遵循一条直线状曲线(上面的前 5 个数据点),然后它会遵循一条更像指数的曲线(从第 6 点开始)。

所以我一直在研究实现一种机器类型学习算法,通过该算法我可以告诉 matlab “启动”点在哪里以及启动点出现的数据“形状”,以便将来它可以准确定位“踢”点。

我对 Matlab 和机器学习都比较陌生(如果机器学习甚至是解决我的问题的最佳方法),我不知道应该从哪里开始。我希望有人能指出我正确的方向,无论是 matlab 代码示例和/或一些具有编码实现的初学者理论。

【问题讨论】:

  • 您是否在寻找潜在信号的梯度变化?否则,如果有噪音,那么您将在整个地方检测到“显着”的梯度变化。

标签: matlab machine-learning detection


【解决方案1】:

我认为在这种情况下,ML 是一种过度杀伤力。如果数据在一条直线上,则意味着它的导数是恒定的,这反过来意味着秒为零。因此,通过使用diff 两次计算近似二阶导数,并找到它变得超过某个阈值的位置。这个阈值应该接近于零。

x = [ 1.25 2.5 3.75 5 7.5 12 21 36 49 64 ];
plot(diff(diff(x)));

【讨论】:

  • 要补充您的答案,他基本上需要找到加速度超过某个水平的点,并可能将其与这些点的信号总体水平进行比较,以考虑噪声。
猜你喜欢
  • 1970-01-01
  • 2022-06-13
  • 1970-01-01
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多