?? ms_sfun_qconvert.m
字號:
function [sys,x0,str,ts]=MS_SFUN_QConvert(t,x,u,flag)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% M文件S-函數的主體部分
%函數名稱: MS_SFUN_QConvert
%主要功能: 根據輸入參數flag的數值調用相應的函數
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
switch flag
case 0
%當flag等于0時調用mdlInitializeSize函數執行初始化
[sys,x0,str,ts]=mdlInitializeSizes;
case 2
%當flag等于2時調用xWalshCodeIndex函數計算離散狀態的數值
sys=mdlUpdate(t,x,u);
case 3
%當flag等于3時調用mdlOutputd函數計算輸出信號的數值
sys=mdlOutputs(t,x,u);
case{1,4,9}
%當flag等于1/4/9時沒有相應的操作(沒有連續狀態)
sys=[];
otherwise
%當flag等于其他數值時表示仿真過程出錯
error(['Unhandled flag=',num2str(flag)]);
end
%end MS_SFUN_QConvert
%
%====================================================================
%mdlInitializeSizes
%S-函數的初始化
%向Simulink返回S-函數各種信號長度,初始設置和抽樣時間設置
%====================================================================
function [sys,x0,str,ts]=mdlInitializeSizes
%調用simsize獲得一個用于存放長度信息的結構
sizes=simsizes;
%設置連續狀態的個數
sizes.NumContStates=0;
%設置離散狀態的個數
sizes.NumDiscStates=2;
%設置輸出信號的個數為1
sizes.NumOutputs=1;
%設置輸入信號的個數為1
sizes.NumInputs=1;
%設置直接反饋的狀態
%0表示沒有直接反饋
%1表示存在直接反饋
sizes.DirFeedthrough=1;
%設置抽樣時間的個數(>=1)
sizes.NumSampleTimes=1;
%通過simsizes把sizes結構返回給sys
sys=simsizes(sizes);
%
%設置S-函數的初始狀態x0
x0=[0 0]';
%
%設置S-函數的保留參數str(應該設置為空間向量[])
str=[];
%
%初始化抽樣時間
ts=[-1 0];
%end mdlInitializeSizes
%
%========================================================================
%xWalshCodeIndex
%更新S-函數的離散狀態并且向Simulink返回這些狀態的數值
%========================================================================
function sys=mdlUpdate(t,x,u)
%計算S-函數的離散狀態并且通過sys參數返回給Simulink
if x(1)==0
x(2)=-1*u;
x(1)=1;
else
x(1)=0;
end
sys=x;
%end mdlUpdate
%
%========================================================================
%mdlOutputs
%計算S-函數的輸出信號并且返回給Simulink作為模塊的輸出
%=======================================================================
function sys=mdlOutputs(t,x,u)
%計算S-函數的輸出信號并且通過sys參數返回給Simulink
if x(1)==0
sys=u;
else
sys=x(2);
end
%end mdlOutputs
%end program
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -