You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计满足指定阈值条件的峰值数量(Excel/MATLAB实现)

步行采集信号高于阈值4的峰值统计方案

步行采集信号波形图,单个峰值对应一次脚步
需求为统计波形中所有幅值高于4的峰值总数,对应有效脚步计数,以下是不同工具的可落地操作步骤:

Excel 实现方法

  • 先将按采样顺序排列的信号幅值数据导入Excel,假设幅值数据存放在A列,A1为表头,数据从A2单元格开始依次排列
  • 新增B列作为峰值标记列,在B2单元格输入公式 =IF(AND(A2>4,A2>A1,A2>A3),1,0),选中B2下拉填充整列。公式逻辑:同时满足「当前点数值大于4」「当前点比前一个采样点数值大」「当前点比后一个采样点数值大」三个条件,即判定为符合要求的有效峰值,标记为1,其余点标记为0
  • 在任意空白单元格输入求和公式 =SUM(B:B),计算结果就是高于4的峰值总个数。

若采样率较高,单个峰值会覆盖多个连续采样点,可将公式中前后点的对比范围扩大到前后2-3个点,避免同一个峰值被重复计数;如果信号有小幅噪声波动,可以给判断条件增加最小差值要求,比如改成AND(A2>4,A2>A1+0.2,A2>A3+0.2),过滤噪声导致的伪峰。

MATLAB 实现方法

  • 先将采集到的一维信号数组导入MATLAB工作区,假设信号变量名为walk_signal
  • 直接调用MATLAB内置的峰值查找函数编写脚本,代码如下:
% 提取信号中所有峰值的幅值和对应位置
[peak_amplitude, peak_location] = findpeaks(walk_signal);
% 筛选幅值大于4的峰值并统计总数
valid_peak_num = sum(peak_amplitude > 4);
% 可选:绘图标记有效峰值做人工核验
plot(walk_signal, 'b')
hold on
plot(peak_location(peak_amplitude>4), peak_amplitude(peak_amplitude>4), 'ro', 'MarkerSize',8)
hold off
  • 运行脚本后,工作区中valid_peak_num的变量值就是需要的统计结果,图中红色圆圈标记的就是所有符合要求的峰值,可直接目视核对是否存在误判漏判。

若信号噪声较多,可在findpeaks中添加MinPeakProminence参数设置峰值最小突出度,比如写为findpeaks(walk_signal, 'MinPeakProminence', 0.5),即可过滤掉小幅噪声导致的假峰值,参数值可根据实际信号的噪声大小灵活调整。

Python 开源免费实现方法

不需要付费软件,用开源的Python科学计算库即可完成统计:

  • 先在命令行执行pip install numpy scipy matplotlib安装所需依赖
  • 编写处理脚本,逻辑和MATLAB一致:
import numpy as np
from scipy.signal import find_peaks
import matplotlib.pyplot as plt

# 读取自己的信号数据,替换成对应文件路径即可,csv格式加delimiter=','参数
walk_signal = np.loadtxt("你的信号数据文件路径")
# 直接查找高度大于4的峰值
valid_peaks, peak_properties = find_peaks(walk_signal, height=4)
peak_count = len(valid_peaks)
print(f"幅值高于4的峰值总个数为:{peak_count}")

# 可选:绘图核验结果
plt.plot(walk_signal)
plt.plot(valid_peaks, walk_signal[valid_peaks], "ro")
plt.show()
  • 运行脚本后控制台会直接打印统计结果,弹出的图像会用红点标记所有有效峰值,方便核验。

内容的提问来源于stack exchange,提问作者Đức Khánh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 03:01:25