【发布时间】:2017-02-22 09:16:29
【问题描述】:
我需要找出差异大于 +-3 的正峰和负峰之间的差异。
我在 MATLAB 中使用findpeaks 函数来查找数据的正负峰值。
在我的代码示例中:
[Ypos, Yposloc] = findpeaks(YT0);
[Yneg, Ynegloc] = findpeaks(YT0*-1);
Yneg = Yneg*-1;
Yposloc 和Ynegloc 返回数据中正峰和负峰的位置。
我想根据峰的顺序连接 Ypos 和 Yneg。
例如,我的峰是
Ypos = [11 6 -10 -10 6 6 6 6 6 -5]
Yneg = [-12 -14 -11 -11 -11 5 5 5 -6]
YT0中的位置
Yposloc = [24 63 79 84 93 95 97 100 156]
Ynegloc = [11 51 78 81 85 94 96 99 154]
在这种情况下,Yposloc 和 Ynegloc 都是 9x1,我可以执行以下操作;
nColumns = size(Yposs,2);
YTT0 = [Yneg, Ypos]';
YTT0 = reshape(YTT0(:),nColumns,[])';
YTT0 = diff(YTT0)
YT0Change = numel(YTT0(YTT0(:)>=3 | YTT0(:)<=-3));
我感兴趣的全部更改是6
但是,我需要根据它们的位置自动连接 Yneg 和 Ypos。所以我认为我需要做一个if 声明来确定我的正峰值或负峰值是先出现的?然后,我不确定如何解决Ypos和Yneg大小不同的问题。
我多次运行此脚本,其中数据发生变化并且负/正峰值顺序不断变化。有没有一种简单的方法可以比较峰值位置,还是我在正确的轨道上?
【问题讨论】:
-
我不太确定您的目标是什么。你有最小值和最大值以及相应的位置。然后你计算这些收益或损失,并想计算最小值和最大值(或最大值和最小值)之间的差异在哪里更大 3. 到目前为止我是对的吗?这就是你想要的全部吗?您想如何比较位置?它们是在同一点还是彼此之间的距离相同或其他什么?
-
嗨 Fin,我稍微编辑了我的帖子。是的,到目前为止你是对的。基本上,我正在查看向相机展示面部的动作。我对“明显”的运动感兴趣,即从峰值到峰值的变化很大。到目前为止,我想根据先出现的位置来比较位置,即如果正位置在前,则与负位置进行比较,然后与正位置进行比较,然后再与第四位置进行比较。