當前位置:編程學習大全網 - 編程軟體 - MatlabMatlab中如何編寫S函數

MatlabMatlab中如何編寫S函數

mpl的118行case 3,sys=mdlOutputs(t,x,u);flag=3表示此時要計算輸出,即y=fo(t,x,u),找到mdlOutputs函數(在218行),如上,如果sys=[]表示沒有輸出,我們改成sys=fo(t,x,u)或sys=C*x+D*u %sys此時為輸出y好像快完了,嘻嘻,在sfuntmpl的124行case 4,sys=mdlGetTimeOfNextVarHit(t,x,u);flag=4表示此時要計算下壹次采樣的時間,只在離散采樣系統中有用(即上文的mdlInit ializeSizes中提到的ts設置ts(1)不為0)連續系統中只需在mdlGetTimeOfNextVarHit函數中寫上sys=[];這個函數主要用於變步長的設置,具體實現大家可以用edit vsfunc看vsfunc.m這個例子最後壹個,在sfuntmpl的130行case 9,sys=mdlTerminate(t,x,u);flag=9表示此時系統要結束,壹般來說寫上在mdlTerminate函數中寫上sys=[]就可,如果妳在結束時還要設置什麽,就在此函數中寫關於sfuntmpl這個s函數的模板講完了。s函數還可以帶用戶參數,下面給個例子,和simulink下的gain模塊功能壹樣,大夥自己 看吧,我睡覺去了,累了。function [sys,x0,str,ts] = sfungain(t,x,u,flag,gain)switch flag,case 0,sizes = simsizes;sizes.NumContStates = 0;sizes.NumDiscStates = 0;sizes.NumOutputs = 1;sizes.NumInputs = 1;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1;sys = simsizes(sizes);x0=[];str=[];ts=[0,0];case 3,sys=gain*u;case {1,2,4,9},sys = [];end做好了s函數後,simulink--user-defined function下拖壹個S-Function到妳的模型,就可以用了,在simulink----user-defined function還有個s-Function Builder,他可以生成用c語言寫的s函數在matlab的workspace下打sfundemos,可以看到很多演示s函數的程序。

  • 上一篇:js中的var是什麽意思,
  • 下一篇:達人進,agth日翻軟件的遊戲特殊碼怎麽辦?
  • copyright 2024編程學習大全網