matlab对信号积分,对信号求积分 - Simulink- MathWorks 中国
說明
Integrator 模塊輸出其輸入信號相對于時間的積分值。
Simulink? 將 Integrator 模塊作為具有一種狀態的動態系統進行處理。模塊動態由以下方程指定:
{x˙(t)=u(t)y(t)=x(t)x(t0)=x0
,其中:
u 是模塊輸入。
y 是模塊輸出。
x 是模塊狀態。
x0 是 x 的初始條件。
雖然這些方程定義了連續時間下的準確關系,但 Simulink 使用數值逼近方法以有限精度來進行計算。Simulink 可以使用若干不同的數值積分方法來計算模塊的輸出,每種方法都在特定的應用中各具優勢。使用 Configuration Parameters 對話框的 Solver 窗格(請參閱Solver 窗格)可以選擇最適合您的應用的方法。
所選求解器會使用當前輸入值和前一個時間步的狀態值計算 Integrator 模塊在當前時間步的輸出。為支持此計算模型,Integrator 模塊會保存在當前時間步的輸出,以供求解器計算其在下一個時間步的輸出。該模塊還為求解器提供了初始條件,用于計算該模塊在仿真開始時的初始狀態。初始條件的默認值為 0。使用模塊參數對話框可以為初始條件指定其他值,或在模塊上創建初始值輸入端口。
使用參數對話框可以:
定義積分的上限和下限
創建可將模塊的輸出(狀態)重置為初始值的輸入,具體取決于輸入的變化方式。
創建可選的狀態輸出,以便模塊的輸出值可以觸發模塊重置
使用 Discrete-Time Integrator 模塊可以創建純離散系統。
定義初始條件
可以在模塊對話框上將初始條件定義為參數,或者從外部信號輸入初始條件:
要將初始條件定義為模塊參數,請將 Initial condition source 參數指定為 “internal” 并在 Initial condition 字段中輸入值。
要從外部源提供初始條件,請將 Initial condition source 參數指定為 “external”。模塊輸入下會顯示一個額外輸入端口。
注意
如果積分器限制其輸出(請參閱限制積分),則初始條件必須在積分器的飽和界限范圍內。如果初始條件在模塊飽和界限范圍之外,該模塊會顯示錯誤消息。
限制積分
要防止輸出超出可指定的級別,請選中 Limit output 復選框,并在相應的參數字段中輸入限制。此操作會使該模塊起到限量積分器的作用。當輸出達到界限時,積分操作將關閉以防止積分飽和。在仿真期間,您可以更改限制,但不能更改是否限制輸出。模塊按如下方式確定輸出:
當積分小于或等于 Lower saturation limit 時,輸出保持在 Lower saturation limit。
當積分在 Lower saturation limit 和 Upper saturation limit 之間時,輸出為積分。
當積分大于或等于 Upper saturation limit 時,輸出保持在 Upper saturation limit。
要生成指示狀態正受到限制的信號,請選中 Show saturation port 復選框。模塊輸出端口下方會顯示一個飽和端口。
信號具有以下三個值之一:
1 表示正在應用上限。
0 表示積分不受限制。
-1 表示正在應用下限。
如果選中此復選框,模塊將包含三個過零點:一個用于檢測何時進入飽和上界,一個用于檢測何時進入飽和下界,一個用于檢測何時不再飽和。
注意
對于 Integrator Limited 模塊,默認情況下 Limit output 處于選中狀態,Upper saturation limit 設置為 1,Lower saturation limit 設置為 0。
繞回循環狀態
自然界中有多種物理現象表現為循環、周期或旋轉。例如,表現出旋轉運動的物體或機械以及振蕩器會就屬于這種現象。
在 Simulink 中對這些現象進行建模時,需要對定期或循環信號的變化率進行積分以獲取運動狀態。
但是,這種方法的缺點是,經過長時間仿真后,表示定期或循環信號的狀態會積分為很大的值。而且,由于角度減小,計算這些信號的正弦或余弦所占用的時間會越來越長。大信號值還會對求解器的性能和準確性產生負面影響。
克服這一缺點的一種方法是在角狀態達到 2π 時將其重置為 0(或者在其達到 π 時重置為 –π,以確保數值對稱)。此方法可改進正弦和余弦計算的準確性,并縮短角度減小時間。但該方法還需要過零檢測,并引入了求解器重置,這會減慢可變步長求解器的仿真,尤其是在大型模型中。
為消除繞回點處的求解器重置,Integrator 模塊支持繞回狀態,您可以通過在模塊參數對話框上選中 Wrap state 來啟用這些狀態。當啟用 Wrap state 時,模塊圖標將更改為指示該模塊具有繞回狀態。
Simulink 允許以繞回狀態上限和下限值參數為邊界的繞回狀態。下面的方程給出了確定繞回狀態的算法:
y={xx∈[xl,xu)x?(xu?xl)?x?xlxu?xl?otherwise
其中:
xl 是繞回狀態的下限值。
xu 是繞回狀態的上限值。
y 是輸出。
支持繞回狀態具有以下優勢。
消除當模型接近大角度和大狀態值時的仿真不穩定性。
減少仿真期間的求解器重置次數并消除對過零檢測的需求,從而改善仿真時間。
消除大角度值,從而加速針對角狀態的三角函數計算。
提高求解器的準確性和性能,并支持無限制仿真時間。
重置狀態
模塊可以根據外部信號將其狀態重置為指定的初始條件。要使模塊重置其狀態,請選中其中一個 External reset 選項。模塊輸入端口下方將顯示一個觸發端口,并指示觸發類型。
選擇 “rising” 可在重置信號從負值或零上升到正值時重置狀態。
選擇 “falling” 可在重置信號從正值下降到零或負值時重置狀態。
選擇 “either” 可在重置信號從零變為非零值、從非零值變為零或改變符號時重置狀態。
選擇 “level” 可于重置信號在當前時間步為非零值時或者從上一個時間步的非零值更改為當前時間步的零值時重置狀態。
選擇 “level hold” 可于重置信號在當前時間步為非零值時重置狀態。
重置端口具有直接饋通。如果模塊輸出直接或通過一系列帶直接饋通的模塊反饋到此端口中,則會產生代數環(請參閱代數環概念)。使用 Integrator 模塊的狀態端口可以反饋該模塊的輸出,而不會創建代數環。
注意
為了符合汽車工業軟件可靠性協會 (MISRA?) 軟件標準,您的模型必須使用布爾信號來驅動 Integrator 模塊的外部重置端口。
關于狀態端口
在 Integrator 模塊的參數對話框上選中 Show state port 復選框會導致 Integrator 模塊的頂部顯示一個附加輸出端口,即狀態端口。
狀態端口的輸出與模塊的標準輸出端口的輸出相同,但以下情況除外。如果在當前時間步重置模塊,則狀態端口的輸出為模塊尚未重置時在模塊的標準輸出中顯示的值。狀態端口的輸出在時間步中的顯示會早于 Integrator 模塊輸出端口的輸出的顯示。使用狀態端口可以避免以下建模方案中出現代數環:
自重置積分器(請參閱創建自重置積分器)
將狀態從一個使能子系統切換到另一個(請參閱在使能子系統之間切換狀態)
注意
當更新模型時,Simulink 會檢查狀態端口是否適用于這兩個方案中的一個。如果不適用,會顯示錯誤消息。此外,不能將此端口的輸出記錄在于 Accelerator 模式下執行的引用模型中。如果為該端口啟用記錄,Simulink 將在執行引用模型期間生成“signal not found”警告。
創建自重置積分器
在創建根據其輸出值重置自身的積分器時,Integrator 模塊的狀態端口有助于避免代數環。例如,考慮以下模型。
此模型嘗試通過將積分器的輸出減 1 后反饋到積分器的重置端口來創建自重置積分器。但是,該模型會創建代數環。要計算 Integrator 模塊的輸出,Simulink 軟件需要知道模塊的重置信號的值,反之亦然。由于這兩個值相互依存,Simulink 軟件無法單獨確定一個值。因此,如果您嘗試仿真或更新此模型,系統會顯示錯誤消息。
以下模型使用積分器的狀態端口來避免代數環。
在此版本中,重置信號的值取決于狀態端口的值。狀態端口的值會早于 Integrator 模塊輸出端口的值在當前時間步中顯示。因此,Simulink 可以確定該模塊是否需要在計算模塊輸出之前進行重置,從而避免代數環。
在使能子系統之間切換狀態
狀態端口可幫助您在兩個使能子系統之間傳遞狀態時避免代數環。例如,考慮以下模型。
使能子系統 A 和 B 包含以下模塊:
子系統 A子系統 B
在此模型中,一個恒定的輸入信號驅動兩個對信號求積分的使能子系統。一個脈沖發生器生成啟用信號,從而使執行在兩個子系統之間切換。每個子系統的使能端口均設為重置,這使得子系統可在變為活動狀態時重置其積分器。重置積分器會使積分器讀取其初始條件端口的值。每個子系統中積分器的初始條件端口均連接到另一個子系統中積分器的輸出端口。
此連接的用途是,當執行在兩個子系統之間切換時,啟用對輸入信號的連續積分。但是,此連接會創建代數環。要計算 A 的輸出,Simulink 需要知道 B 的輸出,反之亦然。由于兩個輸出相互依存,Simulink 無法計算輸出值。因此,如果您嘗試仿真或更新此模型,系統會顯示錯誤消息。
同一模型的以下版本使用積分器狀態端口來避免在切換狀態時創建代數環。
使能子系統 A 和 B 包含以下模塊:
子系統 A子系統 B
在此模型中,A 子系統中積分器的初始條件取決于 B 子系統中積分器的狀態端口值,反之亦然。狀態端口的值會早于積分器輸出端口的值在仿真時間步中更新。因此,Simulink 可以計算任一積分器的初始條件,而無需知道另一個積分器的最終輸出值。有關使用狀態端口在條件執行子系統之間切換狀態的另一個示例,請參閱 sldemo_clutch 模型。
指定模塊輸出的絕對容差
默認情況下,Simulink 軟件會使用在 Configuration Parameters 對話框中指定的絕對容差值(請參閱Error Tolerances for Variable-Step Solvers)來計算 Integrator 模塊的輸出。如果此值未提供足夠的誤差控制,則請在 Integrator 模塊對話框的 Absolute tolerance 字段中指定更合適的值。您指定的值將用于計算所有模塊輸出。
選擇所有選項
如果選擇所有選項,模塊圖標將如下所示。
總結
以上是生活随笔為你收集整理的matlab对信号积分,对信号求积分 - Simulink- MathWorks 中国的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CasADi——数据类型详解与基本操作介
- 下一篇: 【蓝队攻防演练思路】From 滴滴蓝军