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);
答案 0 :(得分: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.
根据state-space输出方程y = Cx + Du
,初始输出等于C*x0 = 0.6321*5 = 3.16
,与您绘图中的结果匹配。相反,您应该设置x0 = y0 / ss(sysd).C
,其中y0
是所需的初始输出。对于y0 = 5
,这意味着设置x0 = 7.91
。