[英]MATLAB Lsim initial value for RC filter doesnt work
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);
lsim()
的x0
輸入僅用於定義狀態空間系統的初始條件。
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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.