计算变量保持特定值的持续时间
31次观看(过去30天)
显示旧的注释
接受的答案
凯文·霍利
2023年2月23日
编辑:凯文·霍利
2023年2月23日
负载(“tab.mat”)
Logical_array = tab.s==3000;%在这里选择了速度值
栏(tab.t logical_array)
T2 =表;
计数= 0;
计算="";
Epochtime = [];
在这里,我检测到速度保持在3000值至少3个数据点。除了计算持续时间外,我还为每个检测到的持续时间的开始和结束创建了时间戳。
为Ii = 3:length(logical_array)-1
如果Logical_array (ii+1) == 1 && Logical_array (ii+2) == 1 &&时间点(end) ~=“开始时间”
Count = Count + 1;
如果计算= =""
计算=“开始时间”;
Epochtime = [Epochtime;tab.t (ii)];
其他的
时间点=[时间点;“开始时间”];
Epochtime = [Epochtime;tab.t (ii)];
结束
结束
如果Logical_array (ii) == 0 && Logical_array (ii-1) == 1 && Logical_array (ii-2) == 1 &&时间点(end)==“开始时间”%检测110,即终点
计数= 0;
时间点=[时间点;“结束时间”];
Epochtime = [Epochtime;tab.t (ii)];
结束
结束
t2。Epochtime = Epochtime;
t2。时间点=时间点;
T2.duration (2:2:length(t2.epochtime)) = t2.epochtime(2:2:end)-t2.epochtime(1:2:end-1);
t2.duration(1:2:length(t2.timepoint)) = NaN;
t2
答案= t2.duration(2:2:length(t2.epochtime))
更多答案(2)
图像分析
2023年2月23日
%测量每个区域的持续时间
props = regionprops(mask, 'Area')
下面是完整的演示
S =负载(“tab.mat”);
T = s.tab;
X = t.t;
Y = t.s;
Subplot (2,1,1);
情节(x, y,“b -”,“线宽”2);
网格在;
持有在;
标题(“原始数据”)
在阈值处画一条线。
阈值= 3000;
yline(阈值,“线宽”2,“颜色”,“r”)
标题(“原始数据”)
包含(“t”)
ylabel (“年代”)
%-----------------------------------------------------------------------------------
为y超过阈值的地方获取一个逻辑向量。
掩码= y >阈值;
%测量每个区域的持续时间
Props = regionprops(掩码,“区域”);
%将所有区域的持续时间转化为一个向量(从结构中提取)
S_3000 =[道具。]区)
显示所有持续时间的直方图
Subplot (2,1,2);
直方图(S_3000);
网格在;
标题(“脉冲持续时间”)
包含(“持续时间”)
ylabel (“数”)
0评论
杰森mcilvenny
2023年3月3日9:46
另一个解决方案:
Idx = t.s > 3000;
转换= diff(idx);
started = find(transitions == 1);
Ends = find(transitions == -1);
duration = ends - starts;
durdates = t.t(开始);
s3000 =时间表(durdates,持续时间);
栏(s3000。durdates s3000.durations);
datetick