簡體   English   中英

RC 濾波器的 MATLAB Lsim 初始值不起作用

[英]MATLAB Lsim initial value for RC filter doesnt work

我會模擬一個具有一些初始值的 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。 在此處輸入圖片說明 它有什么問題,如何模擬它?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM