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

Matlab测量距离问题:仅获取黑色桩间距,如何计算空白区域距离?

用Matlab同时计算峰值与谷值间距的方法

你当前的代码仅通过findpeaks提取了波形中的峰值(对应图中的黑色桩),要同时计算空白区域(谷值)的距离,只需要对数据取反后再调用findpeaks,就能提取原数据的谷值位置,之后合并峰值和谷值的位置并排序,就可以计算所有相邻区间的距离。

修改后的代码如下:

clc;                              
clear all;                        
close all;                        
imtool close all;                 
workspace;

I = [values of data]; % 替换为你的原始数据

% 提取峰值(黑色桩)的位置
[pks,locs,widths,proms] = findpeaks(I,'MinPeakProminence',4);
findpeaks(I,'MinPeakProminence',4,'Annotate','extents');
text(locs+.02,pks,num2str((1:numel(pks))'));

% 提取谷值(空白区域)的位置:对数据取反,谷值变为峰值
[~, valleys_locs] = findpeaks(-I,'MinPeakProminence',4); % 可根据实际数据调整prominence参数

% 合并峰值和谷值的位置,并按从小到大排序
all_locs = sort([locs, valleys_locs]);

% 计算所有相邻位置的间距(包括桩之间、空白区域的距离)
distances = diff(all_locs);

% 可选:在图上标注间距
for i = 1:length(distances)
    mid_loc = (all_locs(i) + all_locs(i+1))/2;
    mid_val = (I(all_locs(i)) + I(all_locs(i+1)))/2;
    text(mid_loc, mid_val, num2str(distances(i)), 'HorizontalAlignment','center');
end

关键说明:

  • 对原始数据I取反得到-I,原数据的谷值会变成新数据的峰值,用findpeaks即可提取谷值位置
  • 合并并排序所有峰值、谷值位置后,用diff计算相邻位置的差值,就是所有区间的距离
  • 可根据实际波形调整MinPeakProminence参数,确保准确识别所有峰值和谷值

数据波形图

内容的提问来源于stack exchange,提问作者lam yaa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:50:22