首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB-从给定的以波形为参考的连续波形中识别附加的峰值。

MATLAB-从给定的以波形为参考的连续波形中识别附加的峰值。
EN

Stack Overflow用户
提问于 2021-08-14 17:38:49
回答 1查看 87关注 0票数 0

我在做这个问题,我必须区分给定的两个波形。我绘制了波形图,并确定了最大值/峰值。我的目标是找出第一个波形中没有的峰值,但在第二个波形中存在。对肉眼来说,识别这一点是相当简单的。但请你帮助我,至少在逻辑/概念,如果可能的话,在MATLAB本身的代码。

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

--编辑--

花时间对信号进行滤波以去除不必要的峰值。

  1. 下图表示参考框架:

参考/校准图

从图中可以明显看出,存在三个峰,即-1,2,3,这幅图被用作参考,以后计算的任何其他点,我们都可以忽略这些峰(可能不在完全相同的坐标上,而是在附近)。

  1. 下面的图是经过上述校准读数后的实时测量:

首次测量

在这个图中,我的目标是识别标有3的峰值。

注:在这里标有-3的峰不对应校准图中的峰值标记-3。

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

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

这里要识别的峰是标有3的峰。

二次测量

这里要识别的峰值是标有-3的峰值。

第三次测量

观察连续的地块,很明显,静态峰在所有读数中都将被忽略,只有那些似乎沿着连续读数移动的新峰才能被识别出来。

EN

回答 1

Stack Overflow用户

发布于 2021-08-14 21:16:22

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

您是按照的外观顺序 (1,2,3等)进行的吗?那些山峰吗?或者,是否还需要在X轴上的峰值是,彼此接近?*

例如,假设标有"1“的峰值具有非常不同的Y值,但其X值与图中的X值相同(也就是说,它们在X轴上相距很远)。你的回答包括这个高峰吗?或者你会因为他们相隔太远而放弃它吗?

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

  • 它们在X轴上(例如,在彼此的一个单位内)的和/或上是彼此接近的。
  • 它们在曲线中具有相同的外观顺序(),因此,当ij时,您不会将一条曲线的峰值i与另一条曲线的峰值j进行比较。

一旦你确定了所有类似的峰值,那么你只需要检查它们的Y值是否超过某个阈值。这个阈值可以是相对,也可以是绝对(两者都是)。

  • 绝对:~(2-Y1)> T,其中T是一些阈值,例如,10个单位
  • 相对:x- Y2 - Y1 x/b> t,其中B可以是min(Y1,Y2)或Y1或Y2或其他基线值,t是一些相对阈值,如0.2
  • 双向:例如,应该至少相差5个Y单位,但在一个相对的尺度上也应该相隔20%以上--这种标准在实践中通常是最好的。

最后,请注意,虽然我们认为我们善于用眼睛捕捉高峰的差异,但事实并非如此。总有一些灰色地带,即使是人类也无法确定是否要把山峰相隔很远。这就是为什么您应该通过下面的练习来发展一些纪律:

  • 随机生成许多曲线(例如,几十对),如图中的曲线
  • 准备清单A:确定你认为具有可比性和显著不同的峰
    • 对于每个这样的峰值,记录Y值的差异。

  • 准备清单B:找出你认为可以比较的峰值,但不是,显著不同的
    • 对于每个这样的峰值,记录Y值的差异。

  • 研究值的分布(最小、最大、平均等)表A和B中

这个练习将帮助您保持一致,并指导您选择阈值。如果不进行此练习,您可能会使用直觉来猜测阈值的初始值。然后,您可以更新阈值,以使您对结果感觉更好,但是这样您就会耗尽宝贵的、真实的测试数据,而下一个看不见的曲线可能再次无法满足您的期望。

接下来,使用上面的练习选择一些阈值(如上面的t和T),并在一些更随机生成的曲线上测试它们。看看有多少假阳性,(当人类认为峰值接近时检测到了显著的差异)和假阴性(当一个人不这么说的时候,没有检测到明显的差异)。对于真实的数据来说,这些都是不可避免的,但是要确保你对命中和失误的数量没有问题。如果没有,请调整阈值并重新执行这些步骤。

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

我已经有一段时间没有使用Matlab了-- Python现在更方便了。如果您的需求更清楚一点,我相信会有人提供代码。

--

*您可能会发现cross-correlation的概念在这方面是有用的,但是您需要注意技术细节--对于简单的用例来说,它可能太复杂了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68785658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档