如何仅在Excel中计算主要峰

时间:2018-09-21 06:06:52

标签: excel

我正在做一个使用加速度计的项目,并且已经收集了大量的读数。我需要找到加速度峰值。我使用了以前找到的公式

= SUMPRODUCT(-(N3:N586> N2:N585),-(N3:N586> N4:N587))

值的范围是N2:N587,这是如何计算每个峰值的,所以即使传感器读数上下跳动也可以计数。有没有一种方法可以使它计数主要峰,例如PEAK =像元值大于之前或之后的3,4或5个像元值。 举个例子 0.01、0.02、0.015、0.018、0.015、0.014、0.016、0.02、0.017、0.018、0.014, 在这个样本中,我想将0.02视为主要峰,而不要将0.018视为次要峰。

如果我将其绘制为图形并进行手动计数,我可以做到,但是对于某些记录,我有3000多个值,因此我必须大量扩展图形才能对其进行计数。 任何帮助都将非常感谢

2 个答案:

答案 0 :(得分:0)

您可以使用VBA并检查单元格值是否大于阈值。但是,您不需要VBA,可以使用另一列并仅编写IF语句来检查是否超过阈值。如果是这样,请返回TRUE。然后使用TRUE计算所有COUNTIF的值。或者,您可以直接使用COUNTIF并检查阈值。

例如: 使用此公式应返回您范围内=COUNTIF($N$3:$N$586;">150")以上的150个值的总数。请注意:单元格引用是绝对值。该公式返回一个总数,而不是总和。根据需要调整范围和阈值。

答案 1 :(得分:0)

您可以使用偏移量公式来检查当前读数是否大于上一个和下一个n读数:

=SUM(IFERROR(($A$2:$A$12>SUBTOTAL(4,OFFSET($A$1,ROW($A$2:$A$12)-B2-1,0,B2)))*
($A$2:$A$12>SUBTOTAL(4,OFFSET($A$1,ROW($A$2:$A$12),0,B2))),0))

必须使用 Ctrl Shift Enter

作为数组公式输入

所需的偏移量存储在B2中。

我尝试了以下偏移量范围:

enter image description here

如您所见,当偏移量增加到6时,您没有峰,因为第二个峰0.02等于第一个峰0.02。这确实凸显了这种方法的潜在障碍,即如果您获得的真实峰值或平稳期(例如)有两个连续的0.02值,则不会计算在内。但是,如果您的实际数据有几个小数位,则可能不会发生。

该公式可能会在范围的末端给出一个虚假峰,因为它将超出范围的值(例如A13,A14等)计数为零-可以对该公式进行进一步完善以避免这种情况。