simulink基礎學習筆記

寫在前面
這個筆記是看B站UP 快樂的宇航boy 所出的simulink基礎教程系列視頻過程中記下來的,寫的很粗糙不完整,也不會補。視頻教程很細跟著做就行。
lesson1-7節的筆記up有,可以加up的群,里面大佬挺活躍的。


lesson8 for循環 For iterator subsystem

在這里插入圖片描述

例1 循環累加(迭代次數10次)
在這里插入圖片描述

雙擊For Iterator可以配置迭代次數

在這里插入圖片描述

例2 查找數組中大于5的數個數
在這里插入圖片描述

在該樣例中,設置項【開始時的狀態】對運行結果影響很大,如果設置為【保持】,則在每次進入該模塊運行時,累加器上一次的運行結果會被保留,導致最終的運算結果出錯。設置為【重置】,每次進入模塊時累加器都會清零從新計算,最終計算結果正常。

在這里插入圖片描述

例3 查找數組中數值為5的數的下標

在這里插入圖片描述

For iterator設置迭代次數(從內部或外部) 輸出為索引值
可以根據輸入值【設置下一個迭代變量 i】 set next i

在這里插入圖片描述

在本例中,Next_i變量的作用是查到索引后跳出循環。
小結:simulink的for循環模塊使用不如C語言for循環,一般實際工程中使用simulink的stateflow狀態機實現for循環要更加靈活。


lesson9 while/if/switch case

while循環 while iterator subsystem

模塊名 while iterator subsystem

在這里插入圖片描述

IC - Init condition - 使能,若IC輸入為0,則不進入循環
進入子系統,為循環累加模型,如下圖
cond - condition - 控制循環是否繼續的使能條件

在這里插入圖片描述

雙擊【while iterator】模塊設置【循環迭代次數】和【開始時的狀態】

在這里插入圖片描述


if模塊

和 if action subsystem模塊搭配使用(用于執行條件成立后動作

在這里插入圖片描述

else if分支,雙擊模塊配置實現,使用逗號分隔分支判斷條件

在這里插入圖片描述


switch case模塊

相當于多分支if,執行模塊同樣為if action subsystem

在這里插入圖片描述

雙擊配置分支case,中間用逗號分隔

在這里插入圖片描述

在Action子系統內可以對數據保持狀態進行配置

在這里插入圖片描述


lesson10 各類常用子系統介紹

Enabled subsystem 使能子系統

在這里插入圖片描述

該子系統為累加器,在Enable使能信號值為1時,運行子系統

在這里插入圖片描述

運行結果如下圖,符合預期(使能信號為1時,計數值累加)

在這里插入圖片描述

Triggered subsystem 觸發子系統

上升沿/下降沿時使能

在這里插入圖片描述

pulse generator 脈沖信號 觸發源
子系統內部模型同樣為累加器

在這里插入圖片描述

通過子系統內對Trigger的配置可以設置 上升沿/下降沿/上升沿或下降沿 觸發

在這里插入圖片描述

運行模型結果如下圖,符合預期(在trigger信號為上升沿&下降沿時計數值增加)

在這里插入圖片描述

function-call subsystem 函數調用子系統

在這里插入圖片描述

用信號為function call 需使用模塊生成信號進行調用 function-call generator,內外部時間設置必須一致,否則報錯。
下圖為Function-Call Generator的參數設置,采樣時間為0.1,意味著0.1s進入一次Function-Call Subsystem

在這里插入圖片描述

subsystem內部如下圖,為累加器

在這里插入圖片描述

雙擊function模塊進行配置,注意配置項【采樣時間】需與Function-Call Generator的參數設置一致,否則會報錯。

在這里插入圖片描述

運行結果如下圖,符合預期(0.1秒進入一次子系統,0.1秒建個累加器數值增加)

在這里插入圖片描述

【注:采樣時間設置項必須為模型步長的倍數】

例2 使用stateflow調用Function-Call

【注:關于stateflow模塊需看lesson15】

在這里插入圖片描述

stateflow狀態機內部

在這里插入圖片描述

配置event信號如下圖

在這里插入圖片描述

結果如下圖,符合預期(0.1秒計數值增加一)

在這里插入圖片描述

Simulink Function

Simulink Function和Function Caller模塊搭配使用,前者為定義,后者調用
simulink function類似于C語言函數定義
函數輸入非單一,也支持數組輸入 輸入輸出端口維度需要定義
例1 加法函數

在這里插入圖片描述

Function內部實現,簡單加法

在這里插入圖片描述

Function Caller調用函數,模塊參數配置如下
用逗號分隔開函數輸入/輸出的多個引腳

在這里插入圖片描述

運行結果如下圖

在這里插入圖片描述

定義了Simulink Function后可以多次調用

例2 數組加法
Simulink Function內部實現如下圖,實現維度為3的數組和數值相加的加法器,輸出一個維度3的數組

在這里插入圖片描述

雙擊對Simulink Function模塊進行配置,可以修改函數名稱,修改函數范圍

在這里插入圖片描述

Function Caller參數配置如下

在這里插入圖片描述

兩種調用方式如下,數組輸入可以使用mux也可直接在Constant模塊直接輸入

在這里插入圖片描述


lesson11 作業

【注:這節模型大,不好截圖,看視頻跟著做比較好】
搭建簡易車輛動力學模型,公式如下圖

在這里插入圖片描述

參數如下
在這里插入圖片描述

使用m腳本文件管理參數

使用m腳本管理模型參數優勢在于,如果參數修改了,只需要修改m文件,而不需要修改模型


lesson12 查表模塊 Lookup Table

一維查表 1-D Lookup Table

X-breakpoints斷點 Y-TableData表數據

在這里插入圖片描述

上圖查表模塊配置對應下表

x-2-1012
y12345

查表X-Y需一一對應,數組維度需要匹配。且breakpoints-X必須單調增加,否則會報錯。
通過X來查找對應的Y數據,運行結果如下圖所示,符合查找預期(輸入1結果4)。

在這里插入圖片描述

由于模塊插值算法設置項選擇了【線性點-斜率】方法,輸入X值在表格中2個X之間時,會根據兩點斜率計算中間點的值。

在這里插入圖片描述

輸入X=0.5得到結果Y=3.5

在這里插入圖片描述

若插值方法選擇【均一/Flat】,即X值和下一X值之間的所有X數值所對應的Y值均為前一X值所對應的Y值。(類似于取整)

在這里插入圖片描述

若插值方法選擇【最臨近值/Nearest】,兩X中間值所對應的Y值則由更臨近的X值決定。(類似于四舍五入)

在這里插入圖片描述

運行結果
在這里插入圖片描述

當外插值方法選擇【線性】時,系統根據最后兩個點的斜率計算之后的數據

在這里插入圖片描述

例如
在這里插入圖片描述

如果外插選擇【裁剪】

在這里插入圖片描述

運行結果

在這里插入圖片描述

使用m腳本進行參數管理

在matlab中編寫m腳本

在這里插入圖片描述

運行后matlab工作區會出現對應變量

在這里插入圖片描述

將變量添加進模塊配置

在這里插入圖片描述

運行結果

在這里插入圖片描述

設置表格數據為外部輸入,即從輸入端口輸入表數據和斷點。

在這里插入圖片描述

從外部輸入數據,模型如下,結果正確。

在這里插入圖片描述

二維查表 2-D Lookup Table

使用m腳本管理參數,x1對應行標號,x2對應列標號,y2為表格數值。表格行數對應x1數組長度,表格列數對應x2數組長度。

在這里插入圖片描述

模塊配置

在這里插入圖片描述

模型輸入有2項,u1對應查找行,u2對應查找列

在這里插入圖片描述

三維查表 3-D Lookup Table

使用m腳本配置三維表格參數

在這里插入圖片描述

模塊配置

在這里插入圖片描述

模型結果

在這里插入圖片描述

動態查表 Lookup Table Dynamic

表格數值在模型運行時變化,使用動態查表

在這里插入圖片描述

運行結果

在這里插入圖片描述

【使用場景:查表的數據由其他模塊計算而來,可使用該模塊】
在新版本matlab中,普通一維查表模塊的配置表格數值從外部端口輸入,也可實現動態查表的功能

在這里插入圖片描述

模型如下

在這里插入圖片描述

運行結果

在這里插入圖片描述


Lesson13 Matlab Function

使用m腳本實現模塊功能,雙擊模塊進入編輯器
多輸入輸出函數

function [y1, y2] = fcn(u1, u2)y1 = u1 + u2;y2 = u1 - u2;
end

運行

在這里插入圖片描述

在編輯器界面點擊【編輯數據】,可以對輸入輸出參數進行配置,如配置參數大小、類型等

在這里插入圖片描述

if語句

每個if需和end關鍵字配對

function y = fcn(u1)y = 0;if u1 > 0y = 1;elseif u1 < 0y = -1;elseif u1 == 0y = 0;endend

運行

在這里插入圖片描述

for循環

每個for循環 需要匹配end關鍵字
for循環參數說明 - 起始步 : 步長 : 終點

% 查找數組u中大于0的數個數
function y = fcn(u)y = uint8(0);for i = 1:1:5if u(i) > 0y = y + 1;endendend

結果

在這里插入圖片描述

matlab庫函數 排序sort
% 排序
function y = fcn(u)y = sort(u);end

結果(sort函數默認從小到大排序)

在這里插入圖片描述

persistent關鍵字 定義持久變量

在這里插入圖片描述

一般函數內定義的變量為局部變量,函數結束后被清除。persistent持久變量相當于全局變量,不會在函數結束后被清除。相當于c語言static關鍵字,靜態局部變量。

% persistent變量
function y = fcn()persistent u;% u = 0;if isempty(u)u = 0;endu = u + 1;y = u;end

注:matlab無u++;這種寫法,自增須寫為u = u + 1;
運行結果(時長5s,步長0.1)

在這里插入圖片描述

添加trigger - 上升沿/下降沿觸發執行

符號窗口點擊添加事件,選擇添加trigger/觸發器

在這里插入圖片描述

點擊添加好的trigger可以配置觸發器觸發方式

在這里插入圖片描述

模型如下圖,pulse generator發出占空比50%周期1s的方波,

在這里插入圖片描述

matlab function模塊內部為自累加函數

% 自累加
function y = fcn()persistent u;if isempty(u)u = 0;endu = u + 1;y = u;end

運行結果如下圖,每次上升沿觸發一次模塊執行,累加計數值加一

在這里插入圖片描述

添加 function call函數調用輸出

和trigger添加類似,可以添加多個函數調用輸出

在這里插入圖片描述

函數調用輸出fcncall名稱可以更改,調用fcncall直接在代碼中輸入對應名稱即可。

在這里插入圖片描述

step階躍模塊:在某一時刻(設置階躍時間為4s)發生從數值0到數值1的變化
參考:https://blog.csdn.net/Mountain01/article/details/130782041

MATLAB function模塊內部代碼

function fcn(u)if u > 0fcncall;endend

Function-Call Subsystem內部

在這里插入圖片描述

運行結果,在第4秒時發生階躍,matlab function模塊發出function call信號使能Function-Call subsystem模塊進行自累加

在這里插入圖片描述


lesson14 Data Inspector 數據檢查器

【此節使用模型為Lesson11作業】

在這里插入圖片描述

除了scope模塊以外的數據查看方法,比scope更加靈活

在這里插入圖片描述

設置需要檢測的數據

雙擊信號線,可以配置該信號線的名稱,配置好名稱便于在數據檢查器中查看

在這里插入圖片描述

單機信號線,會出現標識“…”,選擇第二項“記錄所選信號”(圖標為無線信號)

在這里插入圖片描述

正在記錄的信號線將顯示圖標,單機圖標也可進入數據檢查器窗口

在這里插入圖片描述

輸出端口會默認記錄數據在data inspector中
設置顯示單位和數據類型【注:單位需要在信號線對應模塊中進行配置,才會在此處顯示】

在這里插入圖片描述

設置圖表布局

在這里插入圖片描述

要使信號線數據顯示在右側圖表框內,需要在左側信號列表勾選信號名,一個子圖內也可勾選多個信號數據

在這里插入圖片描述

在同一圖表中檢測任意數量的數據曲線

在這里插入圖片描述

通過游標工具可以查看曲線上對應點的數值,兩個游標可以查看兩個數值之間的時間差

在這里插入圖片描述

清除子圖可以將所選的或者所有子圖勾選的信號線數據清空,恢復為初始狀態

在這里插入圖片描述

查找信號在模型中的位置,可以在左側信號列表中選擇信號,點擊右鍵->在模型中突出顯示,點擊右上角的×可以關閉高亮效果。

在這里插入圖片描述

與前一次運行數據進行比較

樣例為之前搭建的RC一階濾波器【第一節】

在這里插入圖片描述

選擇記錄輸入信號線和輸出信號線,在數據檢查器中觀測結果
先以alpha=0.05運行一次,再以alpha=0.07運行第二次,比較兩次運行的輸出信號結果

在這里插入圖片描述

進入比較模塊,選擇基線和比較項分別為第一次運行輸出信號和第二次運行輸出信號,點擊比較。因為未進行容差設置,左側界面標紅顯示不匹配。

在這里插入圖片描述

容差:以基線為基礎,在±容差值的范圍內查看比較項是否在基線的容差范圍內。
點擊比較項旁邊的[+更多]以配置容差參數,此處設置絕對容差0.2,然后點擊比較。

在這里插入圖片描述

可以看到左側顯示匹配,下圖中曲線上下綠色區域即基線數值±容差值的范圍,比較項處于該范圍內因而通過比較。

在這里插入圖片描述

數據文件可以另存為.mldatx文件,以便下次使用

在這里插入圖片描述


lesson15 stateflow基礎 流程圖

stateflow庫

在這里插入圖片描述

示例 使用chart實現if語句

判斷語句寫在中括號內,執行語句寫在大括號內。
一般規范,橫線寫判斷語句,縱線寫執行語句。
同一個節點有多個跳轉線時應設置優先級(線上的數字)。

線的優先級更改:右鍵線,執行順序Execution order。

在這里插入圖片描述

在模型資源管理器Model Explorer中可以對接口和參數進行配置。

示例 使用chart實現for循環

輸出數組等于輸入數組的平方

在這里插入圖片描述

注:數組索引起始為1
在chart中右鍵線條可以設置斷點

使用C語言

設置方式如圖,在chart模塊左下角小圖標可以看到當前語言

在這里插入圖片描述

一般來說語法沒有太大差別,區別點:
自增
C語言 i ++;
matlab i = i + 1;
取反
C語言 y = !x;
matlab y = ~x;

參數使用matlab腳本中定義變量

在模型資源管理器中設置
設置變量作用域Scope為parameter,即可識別到腳本中變量


lesson16 stateflow基礎 狀態機

if x > 0state = 1;
elsestate = 0;

使用狀態機實現邏輯,如圖

在這里插入圖片描述

需要在模型資源管理器中配置變量并配置輸入、輸出端口,如下圖

在這里插入圖片描述

狀態機狀態之間如果有多條跳轉線,將會按照跳轉線的優先級來依次判斷。
狀態機每次步長進行一次跳轉,不能連續跳轉(即便滿足條件也不跳轉)。

entry / during / exit

entry后的語句會在進入狀態時執行;
during后的語句會在狀態保持時執行;
exit后的語句會在退出狀態時執行。

if x > 0
輸出狀態state = 1
且輸出計數1開始計數if x <= 0
輸出狀態state = 0
且輸出計數2開始計數

使用chart實現如圖

在這里插入圖片描述

需要在模型資源管理器中配置參數

在這里插入圖片描述

實現結果

在這里插入圖片描述

entry關鍵字可縮寫為en,during關鍵字可縮寫為du,exit關鍵字可縮寫為ex

在狀態機中添加流程圖

if x > 0
輸出狀態state=1
在狀態1下,如果y=1,計數器開始計數
如果y=0,計數器停止計數,且計數器數據保持不變if x <= 0
輸出狀態state=0
計數器清零

實現

在這里插入圖片描述

默認轉移線(有實心圓點的線)只會在第一次進入狀態時走,另一條線在狀態保持期間走(從狀態邊框拉出)。
運行使用單步運行,過程中修改x,y數據進行調試。快捷鍵shift + ctrl + x可注釋不適用的模塊,防止影響數據檢查。

運行結果

在這里插入圖片描述

狀態自跳轉

自跳轉:狀態從自身退出,又重新進入自身
例 計數器

start == 1
計數器計數
reset == 1
計數器重置

實現

在這里插入圖片描述

運行結果

在這里插入圖片描述


lesson17-18 代碼生成

場景

在這里插入圖片描述

流程

在這里插入圖片描述

步驟
搭建模型,在【APP】欄選擇【Embedded Coder】,會彈出新欄【C代碼】,進入并點擊【編譯】即可生成C代碼。

在這里插入圖片描述

在這里插入圖片描述

編譯快捷鍵【Ctrl+B】
注:建模需設置為定步長才可進行代碼生成
生成代碼的最外層需要有inport和outport,即輸入輸出端口

在這里插入圖片描述

生成文件
ert -
rtw - real time workshop

代碼文件

和模型名稱同名的.c文件為主要代碼文件,實現模型功能。

step函數 主要,運行時

initialize 初始化

terminate 終止

所有inport輸入會在一個結構體中,全局變量。outport輸出同上。

同名.h文件,實際程序中include后,可以調用.c中函數

代碼生成配置

求解器配置

在這里插入圖片描述

固定步長(基礎采樣時間)設置不會影響實際代碼

tlc選擇
在這里插入圖片描述
tlc相當于代碼生成的模板

是否生成報告&是否自動打開報告
在這里插入圖片描述

只生成代碼
編譯會生成可執行文件,win平臺生成同名.exe文件。一般僅生成代碼就行。

在這里插入圖片描述

模型和代碼的追溯關系設置

在這里插入圖片描述

對模型中想追溯代碼的模塊單擊【右鍵】-【C/C++代碼】-【導航到C/C++代碼】,即可定位到該模塊生成的代碼在c文件中的位置。
此功能在代碼調試bug時會用到。

靜態代碼度量 static code metrics
在【配置參數】 > 【代碼生成 】> 【報告】窗格中,選擇【生成靜態代碼度量】。生成代碼報告中會有相關訊息。

原子子系統

右鍵子系統模塊【模塊參數】,勾選【視為原子單元】

在這里插入圖片描述

原子子系統對比其他子系統邊框更粗,細邊框的子系統實際上為虛擬子系統,matlab生成代碼時仍然作為整體看待。

在這里插入圖片描述

點擊【代碼生成】欄即可配置該原子子系統代碼生成相關配置

在這里插入圖片描述

重新生成代碼,即會單獨生成相應子系統代碼文件

在這里插入圖片描述

文件打包格式配置

緊湊型 compact

在這里插入圖片描述

原子子系統配置需配置【文件名選項】為【自動】,否則會與緊湊型生成代碼相沖突報錯。

在這里插入圖片描述

生成的代碼文件數量變少,函數、代碼等被集合到同一個文件中,便于復制代碼。

在這里插入圖片描述

其他

在這里插入圖片描述

代碼映射 Code Mapping - C

在這里插入圖片描述

可以對生成的函數名稱進行設置


lesson19 常用模塊介紹2

saturation 范圍限制

在這里插入圖片描述

效果

在這里插入圖片描述

ground & terminator

如果根據功能,模型的輸入或者輸出端口不需要連接任何模塊,直接懸空,也可以仿真或者生成代碼,但通常都會報告警信息。
對于不使用的輸出端口,可以連接到Terminator模塊上;
對于不需要信號輸入的輸入端口,可以連接到Ground模塊上,等同于給了輸入值為0;
這樣可以避免模型報出告警信息,也使得模型更加規范。

在這里插入圖片描述

Rate Limiter 變化速率限制模塊

功能:對輸入信號的變化速率的最大值進行限制,信號變大的速率和變小的速率的最大值,分開設置。
如果信號變大的速率小于Rising slewrate,則輸出與輸入相同;
如果信號變大的速率大于Rising slewrate,則輸出按照Rising slewrate的速度更新;
信號變小同理。

在這里插入圖片描述

效果如圖

在這里插入圖片描述

Integrator/Discrete-Time Integrator 連續積分器/離散積分器

功能:對輸入信號進行積分
Integrator:官方不建議生成代碼
Discrete-Time Integrator:嵌入式系統軟件開發,應使用這個積分器,可以生成代碼測試

在這里插入圖片描述

二者效果相同

在這里插入圖片描述

連續微分 Derivative / 離散微分 Discrete Derivative

求斜率

在這里插入圖片描述

結果

在這里插入圖片描述

乘積 Product of elements

將輸入的所有元素相乘,使用方法和普通product模塊有別

在這里插入圖片描述

修改配置項中【輸入數目】項的符號【*】為【/】,功能變為將元素相乘后求倒數

在這里插入圖片描述

結果

在這里插入圖片描述

注:和product本質為同一模塊,符號改變為【**】即變為普通product

求和 Sum of Elements

對輸入各個元素求和

在這里插入圖片描述

修改【符號列表】項符號為【-】,功能變更為數組求和后求反

在這里插入圖片描述

結果

在這里插入圖片描述

注:和加法器為同一模塊,修改【符號列表】為【++】,變為普通加法器

Data Type Conversion 數據類型轉換模塊

功能:可以將一個信號的數據類型轉換成另一種類型。
雙擊模塊在【模塊參數】中配置【輸出類型】即可配置強制轉換類型。
如果是浮點的轉換成整形,則小數點會被抹掉,在建模過程中,如果模型報出數據類型不匹配的錯誤,可以使用這個模塊將數據類型轉換成需要的類型。
使用這個模塊應當注意,轉換類型應合理,在將寬的數據類型轉換成窄的數據類型時,應當審視是否有溢出。
下圖展示了浮點轉整形時,小數會被抹掉:

在這里插入圖片描述

數據類型轉換時要注意合理性,以下為錯誤示范:高8位被丟棄,導致數據出現錯誤。

在這里插入圖片描述

數據類型向后繼承Inherit,自動根據后面要使用的數據類型進行轉換,不要特別進行設置

在這里插入圖片描述


lesson20 常用模塊介紹3

視頻:https://www.bilibili.com/video/BV17h4y197W4

Manual Switch 手動開關

功能:根據開關狀態選擇不同輸入通路,雙擊模塊即可切換開關狀態。
在這里插入圖片描述

Merge 合并模塊

功能:Merge模塊可以將多個輸入合并成一個信號,合并的邏輯是,輸出信號等于當前被激活的那個輸入信號,因此多個輸入信號不能同時被更新,在同一個時刻,應只有一個輸入信號被更新。

Merge模塊的輸入信號應當用心設計,永遠使用有條件執行的子系統的輸出作為Merge模塊的輸入,并且將子系統未被使能時輸出的更新設置成held,參考help文檔中Merge模塊的使用原則,例如下面這個模型:

在這里插入圖片描述

Multiport Switch 多端口選擇模塊

功能:根據控制信號的值,選擇不同的輸入信號輸出,與C語言中的Switch語句很類似。

最上方入參為控制信號,如果輸入為浮點型數據,simulink會自動對其取整。
最下方*為default默認輸出,通過設置可配置告警或者報錯。

在這里插入圖片描述

模塊參數中可以對該模塊進行配置,如【數據端口數量】可以配置分支數量,默認端口是否和最后一個端口合并等。

在這里插入圖片描述
效果

在這里插入圖片描述

Sources 信號源類別模塊

仿真時使用

在這里插入圖片描述

Signal Builder 信號構造模塊

功能:構造自己想要的各種信號曲線,幫助測試模型。
新版本移除該模塊,功能放在Signal Editor模塊中。

在matlab命令行輸入如下代碼進行調用:

block = signalbuilder([], 'create', [0 5], {[2 2];[0 2]});

打開Signal Builder可以在其中編輯需要的各種曲線,實例效果如下:

在這里插入圖片描述
編輯器

在這里插入圖片描述

效果

在這里插入圖片描述

Clock/Digital Clock 時鐘/數字時鐘模塊

功能:輸出當前仿真時間
連續系統使用Clock模塊,離散系統使用Digital Clock模塊

在這里插入圖片描述

如下圖所示,digital clock數字時鐘更新與模塊設定的【采樣時間】有關,Clock時鐘模塊時間數值是連續更新的。

在這里插入圖片描述

Stop Simulation 仿真停止模塊

功能:輸入信號設為True,可以控制仿真停止
如下模型展示了這個模塊的功能,斜坡信號模塊的斜率為1,當仿真時間達到10時,StopSimulation模塊的輸入信號變為true,所以雖然仿真時間設為20,但是在10s時仿真停止。

在這里插入圖片描述

Real-Time Synchronization 實時仿真模塊

功能:可以控制模型按照真實時間的速度運行,適用于模型和一些實時系統聯合仿真調試的場景。但是改模塊保證的實時性精度不高。

在這里插入圖片描述
添加該模塊到模型中即可,該模塊沒有輸入輸出。如下參數配置,表示誤差累積達到10次,模型會報錯停止運行,如果可以接受實時性的誤差,不希望模型經常報錯停止運行,可以將這個參數設置為一個較大的數值。
在這里插入圖片描述
該模塊發揮作用需要安裝Kernel,在matlab命令行窗口中運行如下命令安裝

sldrtkernel -install

在Simulink help文檔中搜索如下主題,可以查看相關信息
Install Real-Time Kemel
2021a版本的Matlab在win11系統上,有兼容性問題,無法正常使用該模塊


lesson21 位運算模塊使用介紹

Bit Clear/Bit set 位清除模塊/位置位模塊

功能:
Bit Clear:將一個數的指定bit位設為0。
Bit Set:將一個數的指定bit位設為1。
輸入必須是整型,不支持浮點型數據。

【模塊參數】配置中可以指定要修改的某個位。
效果如下圖:

在這里插入圖片描述

Bitwise Operator 按位操作模塊

功能:將輸入信號和一個指定的數按位進行邏輯運算
如下圖,設置模塊有兩個輸入,輸出結果是將兩個輸入按照位進行與運算得出的。
在這里插入圖片描述

也可以將要按位與運算的數值配置在模塊參數中,如下圖

在這里插入圖片描述

結果

在這里插入圖片描述

Bit to Integer Converter / bit流轉整型模塊

功能:將二進制bit流(用數組表示)轉換成整型數
如下圖所示,將數組[0 0 1 0]轉換成十進制數2
在這里插入圖片描述
配置
位數需要與輸入數組的維度相對應,否則報錯
MSB first,數組的第一個元素表示bit流的最高bit位,數組的最后一個元素表示bit流的最低bit位,因此數組[0 0 1 0]被轉換成了十進制的2。

在這里插入圖片描述

如果配置為LSB優先,bit順序相反,數組[0 0 1 0]被轉換為二進制0b0100,即十進制數值4。
在這里插入圖片描述
參考:【MSB和LSB】https://blog.csdn.net/lx123010/article/details/103657114
配置轉換為有符號數

在這里插入圖片描述

結果

在這里插入圖片描述

首位為符號位,后7位為補碼

Integer to Bit Converter 整型轉bit流模塊

功能:將整型數轉換成二進制bit流(用數組表示)
即如下圖所示,也可以選擇輸出的數組為 MSB first 或者LSB first【圖中為MSB優先】

在這里插入圖片描述

Shift Arithmetic 算術位移模塊

功能:1.將數按照bit位左移或者右移;
2.將數的二進制小數點左移或者右移
如下圖將無符號數3,左移一位,得到結果6

在這里插入圖片描述

配置

在這里插入圖片描述

注意,有符號負數右移時,高位補1。如下圖。

在這里插入圖片描述

如果選擇移動方向為雙向,則負數表示左移,正數表示右移。

Binary points to shift 將數的二進制小數點移位

在這里插入圖片描述

這個參數配置是將二進制的小數點左移或者右移,如下圖,-1表示左移,將二進制數0b00000011的二進制小數點左移了一位,即:
0b 0000 0011. -> 0b 0000 001.1
小數點左側的數表示整數部分,即20=1
小數點右側的數表示小數部分,即2-1=0.5
因此轉換后的數在display中顯示為1.5,但這是定點類型數據,被轉換后的數據類型是ufix8 En1,在內存中存儲的數據,轉換前后并沒有發生變化,這也可以通過如下兩個display得到證實。ufix8_En1為定點數據類型。
在這里插入圖片描述

再看如下的例子,將15小數點左移兩位:
0b 0000 1111. -> 0b 0000 11.11
整數部分:21+20=3
小數部分:2-1+2-2=0.75

因此轉換后的數據是3.75,被轉換后的定點數據類型是ufx8_En2。
在這里插入圖片描述

【小數點移位并不改變數據在內存中的存儲方式,改變的是對該數據的解析方式】


lesson22 51單片機跑馬燈

https://www.bilibili.com/video/BV1NV411g7En
思路:使用模型實現循環移位

在這里插入圖片描述
使能子系統1

在這里插入圖片描述

使能子系統2

在這里插入圖片描述

結果-循環左移

在這里插入圖片描述

結果-循環右移

在這里插入圖片描述

配置生成代碼的入參和返回值

在這里插入圖片描述


relay

在這里插入圖片描述

Relay模塊的輸出在兩個指定值之間切換。打開中繼時,它會一直保持打開,直到輸入低于Switch off point參數的值為止。關閉中繼時,它會一直保持關閉,直到輸入高于Switch on point參數的值為止。此模塊接受一個輸入并生成一個輸出。

參考資料:https://zhuanlan.zhihu.com/p/338742418


end

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21852.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21852.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21852.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++初階學習】第十二彈——stack和queue的介紹和使用

C語言棧&#xff1a;數據結構——棧(C語言版)-CSDN博客 C語言隊列&#xff1a;數據結構——隊列&#xff08;C語言版&#xff09;-CSDN博客 前言&#xff1a; 在之前學習C語言的時候&#xff0c;我們已經學習過棧與隊列&#xff0c;并學習過如何使用C語言來實現棧與隊列&…

Python | 平均績點

字符串的概念和特點 字符串既可以使用單引號&#xff0c;也可以使用雙引號""來創建 可以使用運算符來拼接字符串&#xff0c;并返回字符串拼接后的結果。 first_name "Tom" last_name "Jerry" full_name first_name " " &quo…

OCR圖片轉Excel表格:沒結構化的弊端

隨著OCR技術的不斷發展&#xff0c;將表格圖片轉為excel已不再是難題&#xff0c;但是&#xff0c;目前市面上的程序還大多處于僅能將圖片表格轉為普通的excel格式階段&#xff0c;而不能將其結構化&#xff0c;這樣就會產生許多的弊端&#xff0c;具體弊端如下&#xff1a; &l…

數據容器的通用操作、字符串大小比較 總結完畢!

1.數據容器的通用操作 1&#xff09;五類數據容器是否都支持while循環/for循環 五類數據容器都支持for循環遍歷 列表、元組、字符串都支持while循環&#xff0c;集合、字典不支持&#xff08;無法下標索引&#xff09; 盡管遍歷的形式不同&#xff0c;但都支持遍歷操作 2&a…

辦公軟件 Office 安裝教程(親測有效)

Office 現已更名為 Microsoft 365。習慣還是稱作 Office。 1、Office 套裝下載 Windows 的樣子 這里下載的是最新版本的 O365ProPlus 安裝完成后&#xff0c;點擊關閉&#xff08;請先不要打開&#xff09;。 Mac 的樣子 這里下載的是Office for Mac 2019&#xff08;更多版…

QNAP的jellyfin無法使用TMDB刮削的問題

解決方法很簡單&#xff0c;修改QNAP的HOSTS文件 使用DNS Checker工具查詢對應IP&#xff1a; image.tmdb.org api.themoviedb.org www.themoviedb.org 打開hosts文件&#xff0c;添加下列內容&#xff0c;wq保存 [~] # vi /etc/hosts 169.150.249.166 image.tmdb.org 103.2…

速遞FineWeb:一個擁有無限潛力的15T Tokens的開源數據集

大模型技術論文不斷&#xff0c;每個月總會新增上千篇。本專欄精選論文重點解讀&#xff0c;主題還是圍繞著行業實踐和工程量產。若在某個環節出現卡點&#xff0c;可以回到大模型必備腔調或者LLM背后的基礎模型新閱讀。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;則提…

【TB作品】MSP430F149單片機,6通道ADC,串口發送

功能 用6個引腳采集ADC&#xff0c;串口發送到電腦 部分程序 /** Otherwise, the compiler removes it* because it is not used for anything.*/ int kaiguanliang[4]; /* 四個開關量 */unsigned char adok_ifg 1; …

內核宕機自救

【問題】在測試內核級防篡改時&#xff0c;偶爾會遇到內核宕機的問題 【結論】進入緊急救援模式&#xff0c;將服務進程文件的start注釋掉&#xff0c;即可 在Linux系統啟動時&#xff0c;內核啟動順序選擇界面&#xff0c;進入系統歡迎界面按上下左右鍵進入GRUB界面&#xff…

歐佩克+同意集體性減產延長,油價能否穩住?

KlipC報道&#xff1a;歐佩克組織同意將延長目前部分減產協議至2025年&#xff0c;以支撐油價。主要成員國把2023年11月宣布的日均220萬桶的自愿減產措施延長至今年9月底&#xff0c;將在10月份根據市場情況開始縮減自愿減產規模。 高盛分析師表示&#xff0c;“我們認為這次歐…

python常見數據分析函數

apply DataFrame.apply(func, axis0, broadcastFalse, rawFalse, reduceNone, args(), **kwds) 第一個參數是函數 可以在Series或DataFrame上執行一個函數 支持對行、列或單個值進行處理 import numpy as np import pandas as pdf lambda x: x.max()-x.min()df pd.DataFrame(…

高端、大氣、很牛B的免費wordpress模板主題

這是一款專為WordPress打造的極簡主義風格主題&#xff0c;以白色和黑色為主色調&#xff0c;搭配紅色點綴&#xff0c;營造出一種簡潔、專業且具有視覺沖擊力的效果。 該主題的設計理念是“簡單即美”&#xff0c;旨在幫助用戶快速搭建一個美觀、易用的網站。它提供了豐富的自…

動態sql set標簽 , trim標簽

set標簽 來看例子 set標案解決了逗號問題(當if條件不滿足時,逗號無處安放的問題),我認為set標簽可以識別這個問題,并自動忽略這個問題 <update id"update">update employee<set><if test"name!null">name#{name},</if><if te…

使用 Python 處理 Excel 表格數據的實用技巧

簡介 在日常工作中&#xff0c;處理 Excel 表格數據是一項常見的任務。Python 提供了豐富的庫和工具&#xff0c;能夠幫助我們高效地處理 Excel 數據。本篇博客將介紹如何使用 openpyxl 庫來讀取 Excel 表格并進行數據處理&#xff0c;同時展示一個實際案例&#xff0c;說明如…

3079. 求出加密整數的和

給你一個整數數組 nums &#xff0c;數組中的元素都是 正 整數。定義一個加密函數 encrypt &#xff0c;encrypt(x) 將一個整數 x 中 每一個 數位都用 x 中的 最大 數位替換。比方說 encrypt(523) 555 且 encrypt(213) 333 。 請你返回數組中所有元素加密后的 和 。 示例 1&…

HTML基本元素包含HTML表單驗證

可將以下代碼復制另存為一個HTML文件瀏覽器打開自己去看看實際使用效果 <!DOCTYPE html> <html> <head> <meta charset"utf-8"><title>測試</title> </head> <body> <h1>很多事</h1> <h1><b&…

多項分布模擬及 Seaborn 可視化教程

多項分布 簡介 多項分布是二項分布的推廣&#xff0c;它描述了在 n 次獨立試驗中&#xff0c;k 種不同事件分別出現次數的離散概率分布。與二項分布只能有兩種結果&#xff08;例如成功/失敗&#xff09;不同&#xff0c;多項分布可以有 k 種&#xff08;k ≥ 2&#xff09;及…

Nginx的Location匹配與Rewrite重寫

目錄 一.Nginx中location與rewrite 1.Nginx中常用正則表達式 2.location與rewrite的聯系和區別 二.location概述 1.分類 2.匹配規則 3.優先級 4.示例 三.rewrite概述 1.rewrite功能 2.rewrite執行順序 3.跳轉實現 4.語法格式 5.示例 5.1.基于域名的跳轉 5.2.基…

四、利用啟發式算法進行特定數據集的殘差網絡結構搜索【框架+源碼】

背景&#xff1a;工作之后干的事情跟算法關聯甚少&#xff0c;整理下讀書期間的負責和參與的work&#xff0c;再熟悉學習下。 邊熟悉邊整理嘍~ CV Tradictional workCV AI based work機械臂視覺抓取項目機器學習全流程 Pipeline訓練平臺OCR生產線噴碼識別三維重建(SfM)ROS機器人…

C++的vector使用優化

我們在上一章說了如何使用這個vector動態數組&#xff0c;這章我們說說如何更好的使用它以及它是如何工作的。當你創建一個vector&#xff0c;然后使用push_back添加元素&#xff0c;當當前的vector的內存不夠時&#xff0c;會從內存中的舊位置復制到內存中的新位置&#xff0c…