Matlab,特定y范围内的值

时间:2013-08-27 11:50:36

标签: matlab intervals

在MATLAB中,我想知道在x范围内获取y - 范围值的最佳方法是什么。

例如,如果我有一个相对于时间(y - 轴)的温度波动(x - 轴)的图表,我想知道温度高于550°的次数C但低于600°C 温度随时间波动,因此可以在图表中找到这些温度之间的许多间隔。

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找这样的东西:

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)

这里发生的是: c = (T > 0.2) & (T < 0.8)会创建一个掩码,其中您的阈值之间的点为1,而外部的点为0。现在diff找到每个相邻点之间的差异,例如diff([1 0 0 1 1 1 0])将返回-1 0 1 0 0 -1,但我们只想在每次c向量来自0时计算至1(或者我们可以将其计为10,只要我们不计算两者)因此== 1。最后,我们不想错过从头开始的gorup,因此我们在开头添加0

修改

根据您的评论,假设您有一个名为x的时间向量和一个名为y的温度向量:

dx = x(2)-x(1) %I'm assuming this remains constant throughout x, i.e. x(n) - x(n-1) is constant
mask = (y >= 550) & (y <= 600)
totalTime = sum(mask)*dx

如果x中的时差不恒定,请执行以下操作:

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