全宽的峰值

59意见(过去30天)
Mahsa RM.
Mahsa RM. 于2021年8月7日在7:25
回答: 图像分析师 于2021年8月7日在19:22
嗨,我有一个Eog信号,我想知道它的眨眼的持续时间。我想获得 开始 endin. G点的峰值,我已经使用过 findpeaks. 功能,但它给了半海宽度。我怎么能找到完整的持续时间?
任何帮助,将不胜感激。
1条评论
星节演唱
星节演唱 于2021年8月7日在13:20
可能是这样做的唯一方法是首先使用多项式贬值或高通滤波器(如果信号分量本身相对较低的信号分量而言,滤波器方法可能并不总是工作),消除尽可能多的噪声(例如和 smoothdata. ),找到所需的峰值,然后在峰附近阈值。

登录评论。

接受答案

图像分析师
图像分析师 于2021年8月7日在19:22
试试这个:
%找到峰的两侧。
CLC;%清除命令窗口。
全部;%关闭所有数字(除了IMTool之外。)
清除;%删除所有现有变量。或者如果你想要的话。
工作区;%确保显示工作区面板。
格式长g;
格式袖珍的;
fontsize = 15;
%=================================================.=================================
%% mahsa忘了上传数据,所以我被迫
%尝试从图像重新创建它。
rgbimage = imread('image.png');
imshow(rgbimage)
灰度= rgb2gray(rgbimage);
imshow(灰度);
Impixelinfo.
面具=灰度== 255;
Props = RegionProps(掩码,'绑定盒');
%缩小8以远离勾号。
bb = props.boundingbox.
BB(1)= BB(1)+ 8;
BB(2)= BB(2)+ 8;
BB(3)= BB(3) - 16;
BB(4)= BB(4) - 16;
灰度= imcrop(灰色,bb);
imshow(灰度);
[行,列] =大小(灰度);
y =零(列,1);
为了col = 1:列
t =查找(灰度(:,col)<255,1,'第一的');
如果〜isempty(t)
y(col)=行 - t;
结尾
结尾
数字
X = Linspace(2.54E5,2.69E5,长度(Y));
%尺寸为y至-50至+275
Y = Rescale(Y,-50,275);
绘图(x,y,'b-''行宽',2);
网格;
%=================================================.=================================
%现在我们有我们的数据,可以开始。
[peakvalues,indexesofpeaks] = findpeaks(y,'minpeakheight'15);
numpeaks =长度(峰值);
peakleft = =那些(1,numpeaks);
Peakright = =(1,Numpeaks);
%找到山顶左侧的谷
抓住;
为了k = 1:numpeaks
绘图(x(indexesofpeaks(k)),y(indexesofpeaks(k)),'r +''行宽'2,'Markersize'20);
为了k2 = indexesofpeaks(k):-1:1
如果Y(K2)> Y(K2 + 1)
休息;
结尾
结尾
峰值(k)= k2;
结尾
%找到峰值右侧的山谷
为了k = 1:numpeaks
为了k2 = indexesofpeaks(k):长度(y)-1
如果Y(K2 + 1)> Y(K2)
休息;
结尾
结尾
俯角(k)= k2;
结尾
%如果您希望在x而不是索引方面的位置:
xleft = x(peapleft);
xright = x(俯角);
%绘制左侧的红色线条和右侧的红色。
为了k = 1:长度(xleft)
Xline(xleft(k),'颜色''G''行宽',3);
Xline(XRIGHT(k),'颜色''r''行宽',3);
结尾

更多答案(1)

图像分析师
图像分析师 于2021年8月7日在14:52
你有没有试过点击峰值,然后“落下”每侧的斜率,直到信号转身?这将适用于光滑的山峰,但不是那些在主峰上有很多小小的“肩峰”的工作,但我没有看到信号中的任何一个。
在.mat文件中附加信号会有所帮助,但忘了。
2评论
图像分析师
图像分析师 于2021年8月7日17:21
将文件括在.zip文件中并用纸盒图标附加。像(未经测试)的东西
[peakvalues,indexesofpeaks] = findpeaks(y);
numpeaks =长度(峰值);
peakleft = =那些(1,numpeaks);
Peakright = =(1,Numpeaks);
%找到山顶左侧的谷
为了k = 1:numpeaks
为了k2 = indexesofpeaks(k):-1:1
如果Y(K2)> Y(K2 + 1)
休息;
结尾
结尾
峰值(k)= k2;
结尾
%找到峰值右侧的山谷
为了k = 1:numpeaks
为了k2 = indexesofpeaks(k):长度(y)
如果Y(K2 + 1)> Y(K2)
休息;
结尾
结尾
俯角(k)= k2;
结尾
现在,您有阵列给出峰值的左右索引。

登录评论。

s manbetx 845

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!