0

我将模拟一个具有一些初始值的 RC(低通)滤波器。 在此处输入图像描述

R = 1e3; % 1kOm
C = 100e-6; % 100uF
es = tf('s');
LP1 = 1 / (R*C*es + 1);
Ts = 0.1; % 100ms
sysd = c2d(LP1, Ts);

初始值意味着电容器被充电到某个电压(比如说 5V),我们向输入施加一些电压(比如说 10V)。我会看到输出电压/时间图:

x0 = 5; % 5V
input = 10; % 10V
N = 100;
lsim(sysd, ones(1, N)*input, [], x0);

显示的绘图从零开始(无初始条件)。如果我将 tf 转换为 ss:

lsim(ss(sysd), ones(1, N)*input, [], x0);

绘图从非零值开始,但我设置的初始值不是 5V。 在此处输入图像描述 它有什么问题,如何模拟它?

4

1 回答 1

0

x0输入lsim()仅用于定义状态空间系统的初始条件。

  • 在第一个示例中,sysd是传递函数,因此x0没有影响,并且使用了零初始条件。
  • 在第二个示例中,ss(sysd)是一个状态空间模型,因此x0指定了初始状态,而不是您想要的输出。要了解发生了什么,让我们看一下您的状态空间模型:
>> ss(sysd)

ans =

  A = 
           x1
   x1  0.3679

  B = 
       u1
   x1   1

  C = 
           x1
   y1  0.6321

  D = 
       u1
   y1   0

Sample time: 0.1 seconds
Discrete-time state-space model.

根据状态空间输出方程y = Cx + Du,初始输出等于C*x0 = 0.6321*5 = 3.16与图中结果匹配的输出。相反,您应该设置所需的初始输出x0 = y0 / ss(sysd).C在哪里。y0因为y0 = 5,这意味着设置x0 = 7.91

于 2019-07-25T20:55:16.263 回答