日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

matlab中(1 )什么意思,matlab中area(1)什么意?mat – 手机爱问

發布時間:2025/4/16 84 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab中(1 )什么意思,matlab中area(1)什么意?mat – 手机爱问 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2013-10-24

DirFeedthrough 什么意?

s-function也就是system-function的縮寫。說得簡單,s-function就是用MATLAB所提供的模型不能完全滿足用戶,而提供給用戶自己編寫程序來滿足自己要求模型的接口。 要了解 s-function,必須了解以下知識:

(1)direct feedthrough

(2)dynamically sized inputs

(3)setting sample times and offsets

一。 direct feedthrough

direct feedthrough意思是說系統的輸出或可變采樣時間是否受到輸入的控制。有的系統是受到輸入控制的,如:

y=k*u...全部

s-function也就是system-function的縮寫。說得簡單,s-function就是用MATLAB所提供的模型不能完全滿足用戶,而提供給用戶自己編寫程序來滿足自己要求模型的接口。

要了解 s-function,必須了解以下知識:

(1)direct feedthrough

(2)dynamically sized inputs

(3)setting sample times and offsets

一。

direct feedthrough

direct feedthrough意思是說系統的輸出或可變采樣時間是否受到輸入的控制。有的系統是受到輸入控制的,如:

y=k*u (u是輸入,k是放大因子,y是輸出)

而有的系統輸出是不受到輸入影響,如:

輸出:y=x

dx=u

x表示狀態

二。

dynamically sized inputs

主要是給出:輸入連續狀態數目(size。NumContStates),離散狀態數目(size。NumDiscStates) ,輸出數目(size。

NumOutputs),輸入數目(size。NumInputs),Direct Feedthrough(size。Dir Feedthrough)。

三。setting sample times and offsets

setting smaple times and offsets主要設置采樣時間。

MATLAB為了用戶方便,已經書寫了S-FUNCTIONS模板函數sfuntmpl。m。為了更好的寫S-Function,該函數sfuntmpl。m內容如下面所示,該函數可以通過which sfuntmpl。

m來查看它的位置。一般是在\toolbox\simulink\blocks\文件夾中,然后通過輸入命令edit sfuntmpl。m來查看M代碼,當然也可以使用type函數。

事例一:連續系統例子:

function [sys,x0,str,ts] = csfunc(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]=mdlInitializeSizes(A,B,C,D);

case 1

sys=mdlDerivatives(t,x,u,A,B,C,D);

case 3

sys=mdlOutputs(t,x,u,A,B,C,D);

case { 2, 4, 9 }

sys = [];

otherwise

error(['Unhandled flag = ',num2str(flag)]);

end

function [sys,x0,str,ts]=mdlInitializeSizes(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];

function sys=mdlDerivatives(t,x,u,A,B,C,D)

sys = A*x + B*u; % end mdlDerivatives

function sys=mdlOutputs(t,x,u,A,B,C,D)

sys = C*x + D*u; % end mdlOutputs

事例二:離散系統

function [sys,x0,str,ts] = dsfunc(t,x,u,flag)

A=[-1。

3839 -0。5097 1。0000 0];

B=[-2。5559 0 0 4。2382];

C=[ 0 2。0761 0 7。7891];

D=[ -0。8141 -2。9334 1。

2426 0];

switch flag,

case 0

[sys,x0,str,ts] = mdlInitializeSizes(A,B,C,D);

case 2

sys = mdlUpdate(t,x,u,A,B,C,D); %%%%%%%%%%

case 3

sys = mdlOutputs(t,x,u,A,C,D); %%%%%%%%%%%%%

case 9

sys = [];

otherwise

error(['unhandled flag = ',num2str(flag)]);

end %end dsfunc

function [sys,x0,str,ts] = mdlInitializeSizes(A,B,C,D)

sizes = simsizes;

sizes。

NumContStates = 0; sizes。NumDiscStates = size(A,1); sizes。NumOutputs = size(D,1);

sizes。NumInputs = size(D,2); sizes。

DirFeedthrough = 1; sizes。NumSampleTimes = 1;

sys = simsizes(sizes); x0 = ones(sizes。NumDiscStates,1); str = []; ts = [1 0];

function sys = mdlUpdate(t,x,u,A,B,C,D)

sys = A*x+B*u; %end mdlUpdate

function sys = mdlOutputs(t,x,u,A,C,D)

sys = C*x+D*u; %end mdlUpdate

事例三:離散和連續的混合型

function [sys,x0,str,ts] = mixedm(t,x,u,flag)

dperiod = 1; doffset = 0;

switch flag

case 0

[sys,x0,str,ts]=mdlInitializeSizes(dperiod,doffset);

case 1

sys=mdlDerivatives(t,x,u);

case 2

sys=mdlUpdate(t,x,u,dperiod,doffset);

case 3

sys=mdlOutputs(t,x,u,doffset,dperiod);

case 9

sys = [];

otherwise

error(['unhandled flag = ',num2str(flag)]);

end % end mixedm %

function [sys,x0,str,ts]=mdlInitializeSizes(dperiod,doffset)

sizes = simsizes; sizes。

NumContStates = 1; sizes。NumDiscStates = 1;

sizes。NumOutputs = 1; sizes。NumInputs = 1; sizes。DirFeedthrough = 0;

sizes。

NumSampleTimes = 2; sys = simsizes(sizes); x0 = ones(2,1); str = [];

ts = [0 0;dperiod doffset];

function sys=mdlDerivatives(t,x,u)

sys = u; % end mdlDerivatives

function sys=mdlUpdate(t,x,u,dperiod,doffset)

if abs(round((t - doffset)/dperiod) - (t - doffset)/dperiod) < 1e-8, sys = x(1);

else sys = []; end % end mdlUpdate

function sys=mdlOutputs(t,x,u,doffset,dperiod)

if abs(round((t - doffset)/dperiod) - (t - doffset)/dperiod) < 1e-8, sys = x(2); else sys = []; end

本帖中對是連續,離散,連續與離散混合系統的三個例子加以說明,以至于大家在看下面的例子時能更好的理解。

一。函數mdlInitializeSizes

對于描述連續型的函數csfunc。m

sizes。NumContStates = 2; sizes。NumDiscStates = 0;

表明本函數是描述連續型的

sizes。

NumOutputs = 2; sizes。NumInputs = 2;

sizes。DirFeedthrough = 1; sizes。NumSampleTimes = 1;

對于描述離散型的函數dsfunc。

m

sizes。NumContStates = 0; sizes。NumDiscStates = size(A,1);

表明本函數是描述離散型的

sizes。NumOutputs = size(D,1); sizes。

NumInputs = size(D,2);

sizes。DirFeedthrough = 1; sizes。NumSampleTimes = 1;

對于描述混合型的函數mixedm。m

sizes。

NumContStates = 1; sizes。NumDiscStates = 1;

表明本函數是描述混合型的

sizes。NumOutputs = 1; sizes。NumInputs = 1;

sizes。

DirFeedthrough = 0; sizes。NumSampleTimes = 2;

關于變量sizes。numoutputs和sizes。numinputs則由描述的系統的輸出,輸入而定。

關于變量sizes。DirFeedthrough,則可以查看矩陣D,如果D是非空,則為1,否則為0

關于變量sizes。NumSampleTimes,即是ts這個矩陣的行數。

二。函數mdlDerivatives

僅僅出現在含有連續型的系統中;這部分應該根據系統狀態來決定。

三。函數mdlUpdate 僅僅出現在含有離散型的系統中;該函數應該根據系統狀態來決定

四。函數mdlOutputs 該函數在各種類型中都有,應該根據描述系統的輸出來決定;

五。關于書寫s-functions函數的注意之點

(1)我想大家都會覺得上述三個函數都不利于維護,因此在寫s-functions函數時不妨把矩陣 A,B,C,D也考慮成變量,作為輸入參數;

(2)關于在csfuncs。

m中的型如case(2,4,9)這種形式,大家最好不要采用,不利于維護,可以分開來寫

(3)關于結構sizes中的各個變量的值,最好從輸入參量中得到,而不是通過人為判斷來輸入

(4)因此,其實上述三種形式,可以變化成一種形式。

(5)可以通過對相應于你所要求的系統對上述三個函數加以相應的改進來到達自己的要求,因此可以把上述函數當成模板函數。

。收起

總結

以上是生活随笔為你收集整理的matlab中(1 )什么意思,matlab中area(1)什么意?mat – 手机爱问的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。