【发布时间】:2016-01-05 13:33:01
【问题描述】:
我正在研究发动机温度模型。我被困在一个点上。有一个名为tred 的信号需要使用低通滤波器进行过滤,以得到最终的输出信号为tredf。问题是tred 从 90°C 开始,但过滤后tredf 从0. 我正在将我的 simulink 模型与另一个实时模型进行比较。除了这个初始化,一切似乎都很好。我希望我的过滤信号tredf 也从 90°C 开始。我正在使用的过滤器是一个 PT1(比例传输一阶)过滤器(低通),它是从一个自行创建的库中派生的。
过滤器有以下 6 个输入:
- u(k) 即输入即
tred。 - T 即过滤时间常数,即 500。
- y(0) 即初始值,也就是
tred。 - reset - 连接到一个位(当位为假时复位)。
- 计算 - 连接到同一个位(当位为真时计算输出)。
- dT - 采样/增量时间 - 我已将其设置为 0.1。
这是 PT1 块的描述以便更好地理解:
- PT1 模块是具有时间常数 T 的离散时间低通,积分算法由欧拉前向工作。时间常数自动限制在它们的取值范围内(T > = dT)。 y(0)-输入是数字低通指定的一个起始值,因为这个初始值可以在任何时候通过一个脉冲在复位-返回接收。 PT1 - 块必须显式使用启用计算的输入
过滤器的前5个输入是固定的,我只能设置dT。有没有人知道我做错了什么以及输出 i.e.tredf 也从 90°C 开始?
【问题讨论】:
-
好像y(0)输入需要设置为90,你用的是什么?
-
不,它不能设置为 90,因为给定了 y(0) 的输入。我已经尝试并理解了这个问题。 y(0) 不是初始值,而是复位时的起始值。因此,无论何时重置,它都以初始值开始。但是过滤器尚未初始化,因此 simulink 始终从 0 开始。我需要以某种方式为第一个输入重置它,以便它自动获取初始值。但我还没有弄清楚怎么做?任何想法@PhilGoddard
标签: matlab filter signals simulink lowpass-filter