查找数据趋于平稳和上升时间的位置

Finding where data levels off and rise times

我的数据是这样的:

我正在尝试查找有关我的数据的以下信息:

"transient" 部分的增长率

达到稳态的时间和稳态平均值

我认为 stepinfo 是我最好的选择,但它似乎想要将最终值作为稳态值,这并没有给我最好的结果。而且我无法找到稳定时间的平均值,直到我知道它是什么时候......有没有办法在稳态搜索上设置一些界限?在我链接的图片上,50 个数据点可能是 +/- 0.25 内的数据是稳定状态?

您可以做的是:

  1. 决定曲线在瞬态和稳态交点处的斜率
  2. 平滑你的信号
  3. 找出图表上每个点之间的差异
  4. 找到点之间的差异低于您在
  5. 中选择的值的第一个位置

为此,请记住:

  • 开始的差异平均为零,因此您必须跳过这些值。 一种方法很简单:x(x < 0.1 * max(x)) = []; 这样你就可以删除曲线的整个起点。无论如何,这部分你不需要它。记得备份 x.

  • 平滑信号的简单方法是:smooth_x = arrayfun(@(t) mean(x(t:t+k)), 1:numel(x-k))。您需要为 k 找到合适的值。

  • 即使平滑的曲线也会有 "bumps",因此您可能想要比较不相邻的点,例如检查 diff(x(k),x(k+10))。如果这两点之间的平均倾斜度低于您在 1 中选择的值,您就满意了。 finddiff 的组合应该可以解决这个问题。

平滑后,您可以使用 diff 找到瞬态和稳定部分的平均倾斜度。 我无法判断曲线从瞬变到稳定的位置。这是你需要做出的决定。例如,每 10 秒可能小于 0.2 l/min。