【问题标题】:MATLAB- Identifying additional peaks from given consecutive waveforms having a waveform as referenceMATLAB-从以波形为参考的给定连续波形中识别附加峰值
【发布时间】:2021-08-14 17:38:49
【问题描述】:

我正在做这个问题,我必须区分给定的两个波形。我已经绘制了波形并确定了最大值/峰值。我的目标是识别第一个波形中不存在但存在于第二个波形中的峰值。对于肉眼来说,识别这一点非常简单。但是请您至少在逻辑/概念上或如果可能的话,请您帮助我解决 MATLAB 本身的代码。

注意:我希望能够将第 8 个峰值检测为 2 个波形的不同峰值图,我的目的是检测与给定的其他峰值有很大不同的第 8 个峰值2 个波形。

---编辑---

花时间过滤信号以去除不必要的峰值。

  1. 下图代表参考框架:

Reference/Calibration Plot

从图中可以看出存在 3 个峰,即-1,2,3。 该图用作参考,以及稍后计算的任何其他图,我们应该能够忽略这些峰值(可能不在完全相同的坐标上,而是在附近的某个地方)。

  1. 下图是在上述校准读数之后实时进行的测量:

First Measurement

在此图中,我的目标是识别标记为 3 的峰。

注意:此处标记为 3 的峰与校准图中的标记为 3 的峰不对应

在使用校准图作为参考时,我必须忽略此图中的 peak-1,2 并仅识别 peak-3,因为它不存在于前者中(同时忽略校准图中的 peak-3因为它没有出现在这个图中)。

  1. 同样,连续读数图如下所示:

此处要识别的峰是标记为 3 的峰。

Second Measurement

此处要识别的峰是标记为 3 的峰。

Third Measurement

查看连续图,很明显,静态峰值在所有读数中都将被忽略,只有看起来沿着连续读数移动的新峰值才能被识别。

【问题讨论】:

    标签: matlab plot signals waveform


    【解决方案1】:

    首先,您需要确定允许峰值被视为可比的标准。

    您是否只是按照峰的出现顺序(1、2、3 等)?或者您是否还需要峰在 X 轴上彼此靠近?*

    例如,假设图中标记为“1”的峰具有非常不同的 Y 值,但具有与图中相同的 X 值(即,它们在 X 轴上相距很远)。你的答案会包括这个高峰吗?或者你会因为它们相距太远而丢弃它?

    根据您的要求,我可以考虑两个标准来考虑您的峰值是否具有可比性:

    • 它们在 X 轴上彼此靠近(例如,彼此相差 1 个单位) 和/或
    • 它们在曲线中具有相同的出现顺序,因此当 i ≠ j 时,您永远不会将一条曲线的峰 i 与另一条曲线的峰 j 进行比较

    一旦您确定了所有可比较的峰,您只需检查它们的 Y 值是否超过某个阈值。这个阈值可以是relativeabsoluteboth

    • 绝对:|Y2 - Y1| > T,其中 T 是某个阈值,例如 10 个单位
    • 相对:|Y2-Y1|/B > t,其中 B 可以是 min(Y1, Y2) 或 Y1 或 Y2 或其他一些基线值,t 是一些相对阈值,例如 0.2
    • 两者:例如,应该至少相隔 5 个 Y 单位,但在相对比例上相隔 20% 以上 - 这种标准通常在实践中效果最佳

    最后,请注意,虽然我们认为我们擅长用眼睛捕捉峰的差异,但事实并非如此。总会有灰色区域,即使是人类也不确定是否认为山峰相距很远。 这就是为什么您可能应该通过以下练习来培养一些纪律:

    • 随机生成很多(比如几十对)曲线,就像您的绘图中的曲线一样
    • 准备列表 A:确定您认为具有可比性和显着不同的峰
      • 对于每个这样的峰值,记录 Y 值的差异
    • 准备列表B:找出您认为具有可比性但没有显着不同的峰
      • 对于每个这样的峰值,记录 Y 值的差异
    • 研究列表 A 和 B 中值(最小值、最大值、平均值等)的分布

    此练习将帮助您保持一致并指导您选择阈值。如果不进行此练习,您可能会使用直觉来猜测阈值的初始值很差。然后,您可能会更新阈值以更好地了解结果,但您可能会用完宝贵的真实测试数据,并且下一条看不见的曲线可能再次无法满足您的期望。

    接下来,使用上面的练习选择一些阈值(例如上面的 t 和 T),并在更多随机生成的曲线上测试它们。看看有多少 假阳性(当人类会说峰值接近时检测到显着差异)和 假阴性(当人类会检测到显着差异时未能检测到显着差异)另有说法)出现。这些对于真实数据是不可避免的,但请确保您对命中和未命中的数量感到满意。如果不是,请调整阈值并重做这些步骤。

    一旦您对模拟数据的阈值性能感到满意,您就可以在真实数据上运行程序,对代码的性能有更好的期望和理解。

    我已经有一段时间没有使用 Matlab 了——这些天 Python 更方便了。如果你把你的要求说清楚一点,我相信有人会提供代码。

    --

    *您可能会发现互相关的概念在这方面很有用,但您需要注意技术细节——对于您的简单用例而言,它可能过于复杂。 p>

    【讨论】:

    • 感谢您的建议!将尝试全部执行。我的目标是检测参考图中不存在的峰。由于观察是实时进行的,不需要/噪声峰值不一定重叠。是的,x 轴上的峰也应该很接近,但是正如您所看到的,例如,两个图中的 Peak-1 都是不需要的,但它们不重叠。它们相距很远,因此在 x 轴上无法比较。您还可以观察到,在第 7 个峰之后,没有一个峰重叠。我的目标是找出第二个图中存在的额外峰值,并将第一个图作为参考。
    • 我的目标是确定从参考图中突出的峰,在这个特定的观察中是第 8 个峰。如果您需要更多示例以供理解,我很乐意将它们贴上适当的标签。
    • 当你说“峰”的时候,能保证只有一个峰吗?如果您可以通过 imgur.com 等链接其他示例,那么它们肯定会很有用。
    • 我在帖子中添加了一个“编辑”部分,其中包含更多示例读数和详细说明。请提出您的建议。
    猜你喜欢
    • 2011-11-16
    • 2020-11-11
    • 2013-02-25
    • 2012-09-07
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多