Matlab,特定y范围内的值

Matlab,特定y范围内的值,matlab,intervals,Matlab,Intervals,在MATLAB中,我想知道获得特定y-范围内的x-范围值的最佳方法 例如,如果我有一张温度(y-轴)相对于时间(x-轴)的波动图,我想知道温度高于550°C但低于600°C的次数。 温度随时间而波动,因此可以在图表中找到这些温度之间的许多间隔。我想您正在寻找这样的东西: T = rand(100,1); %Your temperature variable c = (T > 0.2) & (T < 0.8); %Your threshholds, in your case s

在MATLAB中,我想知道获得特定
y
-范围内的
x
-范围值的最佳方法

例如,如果我有一张温度(
y
-轴)相对于时间(
x
-轴)的波动图,我想知道温度高于550°C但低于600°C的次数。

温度随时间而波动,因此可以在图表中找到这些温度之间的许多间隔。

我想您正在寻找这样的东西:

T = rand(100,1); %Your temperature variable
c = (T > 0.2) & (T < 0.8); %Your threshholds, in your case switch the 0.2 for 550 and the 0.8 for 600
sum(diff([0; c]) == 1)
如果
x
中的时差不是恒定的,则执行以下操作:

mask = (y >= 550) & (y <= 600)
dx = x(end) - x(end-1);
d = -diff([0;mask;0]).*[x; x(end)+dx];
totalTime = sum(d)

mask=(y>=550)和(y也可以使用
长度(find(c))
?@TryHard发现了一些不同的东西,尽管这可能是OP想要的。我在寻找温度移动到该范围内的次数,你在寻找多少点落在该范围内。不清楚OP在哪个点之后。我在寻找的是图表超出某个特定值的时间,例如,如果有温度为550℃的三个20秒间隔,用
长度(查找(c))
替换
位,得到的条目数在该范围内……如果时间向量值之间的差值不相等,有什么方法可以缓解这种情况?
mask = (y >= 550) & (y <= 600)
dx = x(end) - x(end-1);
d = -diff([0;mask;0]).*[x; x(end)+dx];
totalTime = sum(d)