matlab中關於S fun的呼叫以及子系統的封裝

2022-09-11 18:45:12 字數 2424 閱讀 7456

近日學習matlab建模方面的東西,mark乙個**:邵玉斌老師的教案。

本篇記錄乙個包含s函式的子系統的建立和封裝,用s函式產生任意正弦波。

matlab版本:r2017b

步驟如下:

①首先建立主系統模型。在命令列視窗輸入simulink,在彈出的視窗中新建blank model,接著點選simulink工具欄的library browser,從中選取模組搭建主系統模型,如下圖。

接著,雙擊subsystem搭建子系統內部模型,如下圖。

②系統模型搭建好之後,新建m檔案編寫s函式,示例**如下。(注意:函式名需與m檔名一致。)

function [sys,x0,str,ts] =example1sfun(t,x,u,flag,amp,freq,phase) 

%正弦波訊號源

switch

flag

case

0 % flag=0

初始化

[sys,x0,str,ts]=mdlinitializesizes;

case

3 % flag=3

計算輸出

sys=mdloutputs(t,amp,freq,phase);

case %其他作不處理的flag

sys=; %無用的flag時返回sys為空矩陣

otherwise %異常處理

error([

'unhandled flag =

',num2str(flag)]);

end

%主函式結束

% 子函式實現(1)初始化函式----------------------------------function [sys,x0,str,ts] = mdlinitializesizes %sizes = simsizes; %獲取simulink**變數結構

sizes.numcontstates = 0; %連續系統的狀態數為0

sizes.numdiscstates = 0; %離散系統的狀態數為0

sizes.numoutputs = 1; %輸出訊號數目是1

sizes.numinputs = 0; %輸入訊號數目是0

sizes.dirfeedthrough = 0; %該系統不是直通的

sizes.numsampletimes = 1; %這裡必須為1

sys =simsizes(sizes);

str = ; %通常為空矩陣

x0 = ; %初始狀態矩陣x0 (零狀態情況)

ts = [0

0]; %表示連續取樣時間的**

%初始化函式結束

% 子函式實現(2)系統輸出方程函式-----------------------------function sys =mdloutputs(t,amp,freq,phase)

sys = amp*sin(2*pi*freq*t+phase);%這裡寫入系統的輸出方程矩陣形式即可

%修改這個函式可以得到任意的波形輸出

% 系統輸出方程函式結束

view code

之後要使s-fun模組呼叫編寫好的s函式,需要設定模組的引數。進入子系統,雙擊s-function模組,把s函式m檔案的名稱填入s-function name,再填寫模組的引數,如幅值(amp)等...

③封裝子系統。右擊子系統模組,選擇mask-->create mask,進入封裝編輯介面。如下圖,在左側導航欄點選edit建立模組引數,之後設定好引數的名稱、標題、初始值等。

點選左下角的preview可以預覽引數設定對話方塊。

④**觀察結果。

關於MATLAB中imfilter函式的說明

函式名稱 imfilter 函式語法 g imfilter f,w,filtering mode,boundary options,size optinos 函式功能 對任意型別陣列或多維影象進行濾波 引數介紹 f是輸入影象,w為濾波模板,g為濾波結果 表1 1總結了其他引數的含義。表1 1 imf...

關於MATLAB中的tic toc的問題

其一 matlab實際單位時間計時函式的具體應用,在編寫程式時,經常需要獲知 的執行實際時間,這就需要在程式中用到計時函式,matlab中提供了以下三種方法 1.cputime 單位不明 返回matlab啟動以來的cpu時間,可以在程式執行錢儲存當時的cpu時間,然後在程式執行結束後用cputime...

關於Matlab中括號用法的總結

matlab的語言比較靈活,初學時由於對各種括號的含義不確定,導致經常報錯,而且很難查到原因。故對三種括號的用法進行總結,防止遺忘。locate the element,function call 1 a 1 2 a 1 2 sin 2 construct matrix and combine se...