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

如何统计带峰部凸起的正弦曲线周期?Matlab findpeaks误判问题求解

解决Matlab findpeaks误判正弦曲线峰值的方案

1. 先对曲线做平滑预处理

峰部的小凸起大多是高频噪声或局部扰动导致的,先平滑曲线能有效过滤这类干扰。常用的平滑方法有:

  • 移动平均(movmean):适合简单的平滑需求
  • Savitzky-Golay滤波(sgolayfilt):能保留曲线整体趋势的同时滤除高频噪声,尤其适合正弦这类有规律的曲线

示例代码:

% 生成带凸起的正弦曲线
t = linspace(0, 4*pi, 1000);
y = sin(t) + 0.1*randn(size(t)) + 0.2*sin(20*t); % 叠加高频凸起模拟峰部干扰

% 用Savitzky-Golay滤波平滑曲线
window_len = 31; % 窗口长度需为奇数
order = 2; % 多项式拟合阶数
y_smooth = sgolayfilt(y, order, window_len);

% 分别检测原始曲线与平滑后曲线的峰值
[pks_raw, locs_raw] = findpeaks(y);
[pks_smooth, locs_smooth] = findpeaks(y_smooth);

% 可视化对比效果
figure;
plot(t, y, 'b', t, y_smooth, 'r', t(locs_raw), y(locs_raw), 'bo', t(locs_smooth), y_smooth(locs_smooth), 'rs');
legend('原始曲线', '平滑曲线', '原始检测峰值', '平滑后检测峰值');

2. 精细化调整findpeaks的参数组合

除了单一阈值,合理搭配以下参数能精准过滤误判的小峰:

  • MinPeakHeight:设置峰值的最小高度,低于该值的凸起直接忽略(比如设为正弦波峰值的80%)
  • MinPeakDistance:设置两个峰值之间的最小距离,结合正弦波周期设定(比如周期为2*pi,就设为pi,确保每个周期只检测一个峰)
  • Threshold:设置峰值与相邻谷底的最小高度差,过滤高度差极小的凸起

示例代码:

% 基于原始曲线,用参数组合过滤误判峰
peak_height = max(y)*0.8; % 最小峰值设为正弦峰值的80%
peak_distance = pi; % 最小峰距设为半个周期
[pks, locs] = findpeaks(y, 'MinPeakHeight', peak_height, 'MinPeakDistance', peak_distance);

plot(t, y, 'b', t(locs), y(locs), 'ro');
legend('原始曲线', '参数过滤后峰值');

3. 自定义峰值验证逻辑

如果上述方法仍有漏判,可手动筛选候选峰值:先让findpeaks找出所有候选峰,再通过计算峰的宽度、斜率变化等特征,判断是否为真正的正弦峰。比如正弦波的峰值顶部相对平缓,而小凸起的峰宽极窄,可通过半高宽(FWHM)来过滤:

示例代码:

% 找出所有候选峰值
[pks_all, locs_all] = findpeaks(y);

% 计算每个峰值的半高宽
fwhm = zeros(size(pks_all));
for i = 1:length(pks_all)
    loc = locs_all(i);
    % 找到峰值左右两侧低于半高的位置
    left = find(y(1:loc) <= pks_all(i)/2, 1, 'last');
    right = find(y(loc:end) <= pks_all(i)/2, 1, 'first') + loc - 1;
    if ~isempty(left) && ~isempty(right)
        fwhm(i) = right - left;
    else
        fwhm(i) = 0;
    end
end

% 筛选半高宽大于阈值的有效峰(比如设为20个采样点)
valid_idx = fwhm > 20;
pks_valid = pks_all(valid_idx);
locs_valid = locs_all(valid_idx);

plot(t, y, 'b', t(locs_valid), y(locs_valid), 'ro');
legend('原始曲线', '自定义筛选后峰值');

内容的提问来源于stack exchange,提问作者Melissa Orrego

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 03:32:28