在學習s函式的時候總是發現按照網上的很多解釋每一行的意義的文章很多,但是實際操作的時候總是不知道該如何下手,所以我就不再講每一行的意義是什麼,怎麼用,這一節我只講下面一種情況,適合有一點基礎,剛入門的人。
在寫狀態方程時如何加入狀態方程中的已知輸入量。就是如方程
xhat=ax+bu,
y=cx+du
中假如a=[1 2;3 4],那麼有很多時候a=[m f;q w],是這樣的形式出現,網上的s函式的例子也沒有相關的,讓人一下摸不著頭腦,雖然這個對於熟悉的人來說很簡單,但是對於沒有基礎的人來說很難。廢話不多說,下面是例子。
下圖中,上面的是沒有外部引數的,下面是有外部引數的。
s函式**:
沒有外部引數:
function [sys,x0,str,ts]=wentext1(t,x,u,flag)
a=[0.09 0.01;1 0];
b=[1 7;0 2];
c=[0 2;1 5];
d=[3 0;1 0];
switch flag,
case 0,
[sys,x0,str,ts]=mdinitializesizes(a,b,c,d);
case 1,
sys=mdlderivatives(t,x,u,a,b,c,d);
case 2,
sys=mdlupdate(t,x,u);
case 3,
sys=mdloutputs(t,x,u,a,b,c,d);
case 4,
sys=mdlgettimeofnextvarhit(t,x,u);
case 9,
sys=mdlterminate(t,x,u);
otherwise
dastudio.error('simulink:bloks:unhandledflag',num2str(flag));
endfunction [sys,x0,str,ts]=mdinitializesizes(a,b,c,d)
sizes=simsizes;
sizes.numcontstates=2;
sizes.numdiscstates=0;
sizes.numoutputs=2;
sizes.numinputs=2;
sizes.dirfeedthrough=1;
sizes.numsampletimes=1;
sys=simsizes(sizes);
x0=zeros(2,1);
str=;
ts=[0 0];
simstatecompliance = 'unknownsimstate';
function sys=mdlderivatives(t,x,u,a,b,c,d)
sys=a*x+b*u;
function sys=mdlupdate(t,x,u)
sys=;
function sys=mdloutputs(t,x,u,a,b,c,d)
sys=c*x+d*u;
function sys=mdlgettimeofnextvarhit(t,x,u)
sampletime=1;
sys=t+sampletime;
function sys=mdlterminate(t,x,u)
sys=;
有外部引數的:
function [sys,x0,str,ts]=wentext(t,x,u,flag)
%a=[0.09 0.01;1 0];
%b=[1 7;0 2];
%c=[0 2;1 5];
%d=[3 0;1 0];
switch flag,
case 0,
[sys,x0,str,ts]=mdinitializesizes;
case 1,
sys=mdlderivatives(t,x,u);
case 2,
sys=mdlupdate(t,x,u);
case 3,
sys=mdloutputs(t,x,u);
case 4,
sys=mdlgettimeofnextvarhit(t,x,u);
case 9,
sys=mdlterminate(t,x,u);
otherwise
dastudio.error('simulink:bloks:unhandledflag',num2str(flag));
endfunction [sys,x0,str,ts]=mdinitializesizes
sizes=simsizes;
sizes.numcontstates=2;
sizes.numdiscstates=0;
sizes.numoutputs=2;
sizes.numinputs=4;
sizes.dirfeedthrough=1;
sizes.numsampletimes=1;
sys=simsizes(sizes);
x0=zeros(2,1);
str=;
ts=[0 0];
simstatecompliance = 'unknownsimstate';
function sys=mdlderivatives(t,x,u) %讓u(1);u(2)成為輸入變數,可以是其他幾個位置,其他的可以作為外部輸入的值
f=u(3); %外部輸入的值可以是常數,也可以是其他,在寫**時容易出錯,主要是維度出問題
m=u(4); %維度重點看u這個矩陣,容易忘記轉置
a=[0.09 f;1 m];
b=[0 7;0 2];
u=[u(1);u(2)];
sys=a*x+b*u;
function sys=mdlupdate(t,x,u)
sys=;
function sys=mdloutputs(t,x,u)
c=[0 2;1 5];
d=[3 0;1 0];
u=[u(1);u(2)];
sys=c*x+d*u;
function sys=mdlgettimeofnextvarhit(t,x,u)
sampletime=1;
sys=t+sampletime;
function sys=mdlterminate(t,x,u)
sys=;
**沒有和上文的a給出的值一樣,懶得改了,但是大概意思就是這樣,
基礎 函式1
function物件 1.定義 格式 function name param1,param2.數學式的基本公式,目前我只知道我就是長這個樣子的.2.獲取函式本身 a.arguments.callee b.函式名 c.使用作用域下的乙個指向函式的變數名 注意 函式執行時,關鍵字this 呼叫該函式的物...
Python基礎 函式 1
def 函式名 形參 1 2.格式 函式名 實參 def name a,b i a b print i name 20,30 50查詢函式的說明文件 help 函式名 def name a,b 加法函式 寫在def後一排,可以換行 i a b print i name 20,30 help name...
python基礎 函式1
一,為什麼使用函式 1,可以使 的組織結構清晰,可讀性好 2,遇到重複的問題可以直接呼叫函式 3,功能擴充套件時,可直接修改,而無需每處都進行修改 二,函式為何物 函式對程式設計師相當於巧婦之於公尺,藍翔之於挖掘機 學生之於書本。三,函式分類 1,內建函式,python直譯器已經給我們定義好了很多函...