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

--编辑--
花时间对信号进行滤波以去除不必要的峰值。
从图中可以明显看出,存在三个峰,即-1,2,3,这幅图被用作参考,以后计算的任何其他点,我们都可以忽略这些峰(可能不在完全相同的坐标上,而是在附近)。
在这个图中,我的目标是识别标有3的峰值。
注:在这里标有-3的峰不对应校准图中的峰值标记-3。
当使用校准图作为参考时,我必须忽略这个图中的峰值-1,2,并且只识别峰值-3,因为它不存在于前一个图中(同时忽略校准图中的峰值-3,因为它没有出现在这个图中)。
这里要识别的峰是标有3的峰。
这里要识别的峰值是标有-3的峰值。
观察连续的地块,很明显,静态峰在所有读数中都将被忽略,只有那些似乎沿着连续读数移动的新峰才能被识别出来。
发布于 2021-08-14 21:16:22
首先,您需要确定允许将峰值视为可比的标准。
您是按照的外观顺序 (1,2,3等)进行的吗?那些山峰吗?或者,是否还需要在X轴上的峰值是,彼此接近?*
例如,假设标有"1“的峰值具有非常不同的Y值,但其X值与图中的X值相同(也就是说,它们在X轴上相距很远)。你的回答包括这个高峰吗?或者你会因为他们相隔太远而放弃它吗?
根据您的需求,我可以考虑两个标准来考虑您的峰值具有可比性:
一旦你确定了所有类似的峰值,那么你只需要检查它们的Y值是否超过某个阈值。这个阈值可以是相对,也可以是绝对或(两者都是)。
最后,请注意,虽然我们认为我们善于用眼睛捕捉高峰的差异,但事实并非如此。总有一些灰色地带,即使是人类也无法确定是否要把山峰相隔很远。这就是为什么您应该通过下面的练习来发展一些纪律:
这个练习将帮助您保持一致,并指导您选择阈值。如果不进行此练习,您可能会使用直觉来猜测阈值的初始值。然后,您可以更新阈值,以使您对结果感觉更好,但是这样您就会耗尽宝贵的、真实的测试数据,而下一个看不见的曲线可能再次无法满足您的期望。
接下来,使用上面的练习选择一些阈值(如上面的t和T),并在一些更随机生成的曲线上测试它们。看看有多少假阳性,(当人类认为峰值接近时检测到了显著的差异)和假阴性(当一个人不这么说的时候,没有检测到明显的差异)。对于真实的数据来说,这些都是不可避免的,但是要确保你对命中和失误的数量没有问题。如果没有,请调整阈值并重新执行这些步骤。
一旦您对模拟数据上阈值的性能感到满意,就可以在真实的数据上运行程序,同时对代码的性能有更好的期望和理解。
我已经有一段时间没有使用Matlab了-- Python现在更方便了。如果您的需求更清楚一点,我相信会有人提供代码。
--
*您可能会发现cross-correlation的概念在这方面是有用的,但是您需要注意技术细节--对于简单的用例来说,它可能太复杂了。
https://stackoverflow.com/questions/68785658
复制相似问题