全宽峰

15的观点(30天)
Mahsa Rm
Mahsa Rm 2021年8月7日
回答: 图像分析 2021年8月7日
嗨,我有一个小城镇信号的时间我想知道眨眼。我想获得 开始 endin g点的高峰,我使用 findpeaks 函数,而是它给halfheight宽度。我怎么能找到完整的时间吗?
任何帮助将不胜感激。
1评论
明星黾
明星黾 2021年8月7日
可能是唯一的方法就是先去趋势信号使用多项式消除趋势或高通滤波器(过滤器的方法并不总是工作如果相对较低频率的信号分量是自己),消除尽可能多的噪声(例如 smoothdata ),找到理想的山峰,然后阈值附近的山峰。

登录置评。

接受的答案

图像分析
图像分析 2021年8月7日
试试这个:
%找到双方的高峰。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
清晰;%擦掉所有现有的变量。或者clearvars如果你想要的。
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 15;
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
% % Mahsa忘了上传数据所以我被迫的
%,试图重现图像。
rgbImage = imread (“image.png”);
imshow (rgbImage)
grayImage = rgb2gray (rgbImage);
imshow (grayImage);
impixelinfo
掩码= grayImage = = 255;
道具= regionprops(面具,的边界框(“大小));
%下降8摆脱刻度线。
bb = props.BoundingBox
bb (1) = bb + 8 (1);
bb (2) = bb (2) + 8;
bb (3) = bb (3) - 16;
bb (4) = bb (4) - 16;
grayImage = imcrop (grayImage, bb);
imshow (grayImage);
(行、列)= (grayImage)大小;
y = 0(列,1);
坳= 1:列
t =找到(grayImage(:,上校)< 255、1“第一”);
如果~ isempty (t)
y (col) =行- t;
结束
结束
e5 e5 x = linspace(2.54, 2.69,长度(y));
% y - -50 + 275
y =重新调节(y, -50, 275);
情节(x, y,“b -”,“线宽”2);
网格;
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%现在我们有我们的数据,就可以开始了。
[peakValues, indexesOfPeaks] = findpeaks (y,“MinPeakHeight”15);
numPeaks =长度(peakValues);
numPeaks peakLeft = 1 (1);
numPeaks peakRight = 1 (1);
%找到山谷左边的高峰
持有;
k = 1: numPeaks
情节(x (indexesOfPeaks (k)), y (indexesOfPeaks (k)),' r + ',“线宽”2,“MarkerSize”,20);
k2 = indexesOfPeaks (k): 1: 1
如果y (k2) > y (k2 + 1)
打破;
结束
结束
peakLeft (k) = k2;
结束
%找到谷右边的高峰
k = 1: numPeaks
k2 = indexesOfPeaks (k):长度(y) 1
如果(k2 + 1) > y (k2)
打破;
结束
结束
peakRight (k) = k2;
结束
用x %如果你想要的位置而不是索引:
xLeft = x (peakLeft);
xRight = x (peakRight);
%画出红线左边和右边的红线。
k = 1:长度(xLeft)
参照线(xLeft (k),“颜色”,‘g’,“线宽”3);
参照线(xRight (k),“颜色”,“r”,“线宽”3);
结束

答案(1)

图像分析
图像分析 2021年8月7日
你试过就定位山峰,然后“跌倒”两边,直到信号斜率转身?这将为光滑的峰值工作但不是那些有很多小肩峰主峰上,但我没有看到任何在你的信号。
附加你的信号在.mat文件是有用的,但你忘了。
2的评论
图像分析
图像分析 2021年8月7日
编辑:图像分析 2021年8月7日
附上您的文件在一个. zip文件,并将其附加的回形针图标。类似(未测试)
[peakValues, indexesOfPeaks] = findpeaks (y);
numPeaks =长度(peakValues);
numPeaks peakLeft = 1 (1);
numPeaks peakRight = 1 (1);
%找到山谷左边的高峰
k = 1: numPeaks
k2 = indexesOfPeaks (k): 1: 1
如果y (k2) > y (k2 + 1)
打破;
结束
结束
peakLeft (k) = k2;
结束
%找到谷右边的高峰
k = 1: numPeaks
k2 = indexesOfPeaks (k):长度(y)
如果(k2 + 1) > y (k2)
打破;
结束
结束
peakRight (k) = k2;
结束
现在你有数组给左右山峰的索引。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!