在matlab中如何编写多输入输出的s函数
发布网友
发布时间:2022-04-24 01:28
我来回答
共1个回答
热心网友
时间:2023-10-18 13:40
问题太多,就不用一一指正了,以下程序已经经过调试成功。
function [sys,x0,str,ts] = test_0105(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 3,
sys=mdlOutputs(t,x,u);
case {2,4,9},
sys=[];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 3;
sizes.NumInputs = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 0;
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [];
function sys=mdlOutputs(t,x,u)
Is=u(1);angle=u(2);
pos=rem(angle,2*pi);
if pos<pi/3
Ia=Is;Ib=-Is;Ic=0;
elseif pos<2*pi/3
Ia=Is;Ib=0;Ic=-Is;
elseif pos<pi
Ia=0;Ib=Is;Ic=-Is;
elseif pos<4*pi/3
Ia=-Is;Ib=Is;Ic=0;
elseif pos<5*pi/3
Ia=-Is;Ib=0;Ic=Is;
else
Ia=0;Ib=-Is;Ic=Is;
end
sys=[Ia Ib Ic];
问题回答:
1.是的
2.Is和angle已经通过mux模块集中传送给s-function,不需要通过s-function parameter赋值。在程序里面用u(1) u(2)就可以得到输入的值
3.你的程序都是从外部计算之后送给s-function的,不用定义参数。追问朋友,那篇问题我也看过,但是我们的问题就是不一样的,你直接粘贴过来也不适合啊...