在MATLAB的Simulink中有些常用的子產品,今天主要介紹From Workspace子產品和From File子產品。
1.From Workspace子產品
Simulink模型有時需要将Base workspace 的資料導入到模型中進行仿真,From Workspace子產品提供了這樣一個導入功能,它将儲存在 Base Workspace,Model Workspace或 Mask Workspace 等處的變量作為信号導入Simulink模型。
參數設定
參數說明
Data:導入Simulink模型的變量名,可以是變量名也可以是MATLAB表達式,預設
值為simin。
Simin的資料類型可以是以下3種類型:
(1)時間序列Timeseries對象,可以通過timeseries函數建立。
(2)二維矩陣,矩陣第一列為仿真采樣時間序列,其餘每清單示對應采樣時刻的信
号值。
(3)結構體類型,可以包含仿真采樣時間序列作為其成員變量,也可以不包含。
Timeseries對象通常包括Name、Time、TimeInfo、 Data和 DataInfo 5個成
員變量,其中Time中存儲仿真采樣時間向量, Data中存儲對應仿真采樣時刻的信
号量。
(1)時間序列Timeseries對象,可以通過timeseries函數建立。
可以通過timeseries 函數來建立一個時間序列對象,格式為ts = timeseries( data, time),函數參數中data表示信号序列, time表示采樣時間序列,其餘參數timeInfo, dataInfo等可采用預設值,例如:
ts = timeseries(sin([0:0.01:4*pi]),[0:0.01:4*pi]);
timeseries
常見屬性:
Name: 'unnamed'
Time: [1257x1 double]
TimeInfo: tsdata.timemetadata
Data: [1x1x1257 double]
DataInfo: tsdata.datametadata
仿真圖
示波器輸出
(2)二維矩陣,矩陣第一列為仿真采樣時間序列,其餘每清單示對應采樣時刻的信号值。
二維矩陣導入信号時,第一列存儲仿真采樣時間序列,後面每列為一個信号列向量。例如:
maxtri = zeros(size(repmat([0:0.1:10]',[1 3])));%初始化矩陣
%給資料矩陣指派
maxtri(:,1) = [0:0.1:10]';
maxtri(:,2) = 3*sin([0:0.1:10]');
maxtri(:,3) =2*cos([0:0.1:10]');
示例2
仿真圖
示波器輸出
(3)結構體類型,可以包含仿真采樣時間序列作為其成員變量,也可以不包含。
結構體則通常包括3個成員變量time ,signals和 blockName。signals這個成員本身又是一個包含values , dimension和label 3個成員的結構體。支援From Workspace子產品的結構體應該具有以下3個成員變量:
s = struct('time',[0:0.01:10]','signals',struct('values',sin([0:0.01:10]'),'dimension',length([0:0.01:10])));
示例3
示波器輸出
其他參數說明
Output data type:From Workspace子產品輸出信号的資料類型。
Sample time:子產品的采樣時間。因Data中一般都按照系統解算器定義的采樣時
間序列,此處推薦使用預設-1。
Interpolate data:當某些信号在一些采樣時刻點沒有提供對應的采樣資料時,
是否根據線性插值計算出這個時刻的信号值?當勾選此選項則進行線性插值,否則
則延用前一個采樣時刻的信号值。
Enable zero-crossing detection:勾選是否啟動過零檢測功能。
Form output after final data value by:當模型的仿真時間範圍超出
From workspace的data提供資料的時間範圍時,需要選擇如何對提供的采樣時
間範圍外的信号進行插值預測或預設值輸出,選項包括Extrapolation(外部插
值)、Setting to zero(保持О輸出)、Holding finalvalue(輸出最後一個
值)和Cyclic repetition(周期循環輸出)。如果需要産生周期循環的自定義
信号,From Workspace 也是個不錯的選擇,準備好了采樣時間和采樣資料的變量
2.From File子產品
資料存儲是MATLAB/Simulink 的Workspace雖然可以儲存仿真過程資料,但是畢竟是暫時的,關閉MATLAB之後就自動清除掉了。有時需要将仿真得到的寶貴實驗資料長期存放在硬碟上,以便後續使用。MATLAB特有的資料存儲格式是. mat ,在MATLAB中可以使用load從硬碟載入mat檔案内部資料到Workspace,使用save将Workspace的資料存儲到mat 檔案中去。
Simulink提供了From File子產品,可以導入硬碟上的mat檔案到Simulink模型中作為輸入信号連接配接其他子產品進行仿真。該子產品有1個輸出端口,并顯示所導人的mat檔案名在子產品圖示中央,如圖所示。
參數設定
參數說明
File name:子產品所導人的mat檔案名,要求mat檔案是MATLAB timeseries
object或矩陣2種資料格式中的一種。
與From Workspace的導入資料格式相比缺少對結構體類型的支援,并且矩陣的
排布方式也有所不同。From File要求第一行是采樣時間向量,第二行到最後一
行是分别對應采樣時刻的信号值向量。
Output data type:子產品輸出資料類型的設定, From File子產品支援除字長超
過32位的固定點資料類型以外所有的Simulink 内建資料類型。
Sample time:子產品的采樣時間設定,預設是0﹐表示連續采樣時間,以模型的基礎
采樣率(最高采樣頻率)作為此子產品的采樣時間。如果填入一1,則繼承接受From
File 信号的子產品(即其後所連接配接的子產品)的采樣時間。
Data extrapolation before first data point :在 mat 檔案提供的資料
時間範圍之前,SImu-link進行插值所用算法的選擇,包括Linear extrapolation
(線性外插),Hold first value(使用mat 檔案第一個采樣點的值)和Ground
value(使用對應資料類型的0值)。
Data interpolation within time range:在 mat檔案提供的資料時間範圍
内的插值算法選擇,包括Linear interpolation(線性内插)和Zero order
hold(使用相鄰兩個采樣時刻值中的首個。)
Data extrapolation after last data point:在mat檔案提供的資料時間
範圍之後,Simulink進行插值所用算法的選擇,算法選擇同 Data extrapolation
before first data point。
示例4
maxtri = zeros(size(repmat([0:0.1:10],[3 1])));%初始化矩陣
%給資料矩陣指派
maxtri(1,:) = [0:0.1:10];
maxtri(2,:) = 3*sin([0:0.1:10]);
maxtri(3,:) =2*cos([0:0.1:10]);
save maxtri.mat maxtri
示波器輸出
參考内容
[1] 部落格園作者叮叮當當sunny的文章《Simulink仿真入門到精通(二) Simulink子產品 》,文章連結如下:https://www.cnblogs.com/dingdangsunny/p/12235689.html#_label0
[2] 孫忠潇.Simulink仿真及代碼生成技術入門到精通[M].北京:北京航空航天大學出版社,2015.
本文内容來源于網絡,僅供參考學習,如内容、圖檔有任何版權問題,請聯系處理,24小時内删除。
作 者 | 郭志龍
編 輯 | 郭志龍
校 對 | 郭志龍