Matlab Simulink中的 S函数报错,One or more output arguments not assigned during call to .程序如下,两输入三输出,实现根据输入量不同分段计算.检查了很多遍不知道哪里错了.【请高手告知如何具体修改,最好

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/25 06:35:58
Matlab Simulink中的 S函数报错,One or more output arguments not assigned during call to .程序如下,两输入三输出,实现根据输入量不同分段计算.检查了很多遍不知道哪里错了.【请高手告知如何具体修改,最好

Matlab Simulink中的 S函数报错,One or more output arguments not assigned during call to .程序如下,两输入三输出,实现根据输入量不同分段计算.检查了很多遍不知道哪里错了.【请高手告知如何具体修改,最好
Matlab Simulink中的 S函数报错,One or more output arguments not assigned during call to .
程序如下,两输入三输出,实现根据输入量不同分段计算.检查了很多遍不知道哪里错了.【请高手告知如何具体修改,最好把修正后的程序贴上,】
function [sys,x0,str,ts] = sys(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 3,
sys=mdlOutputs(t,x,u);
case{1,2,4}
sys=[];
case 9,
sys=mdlTerminate(t,x,u);
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 =2;
sizes.NumSampleTimes =1;
sys= simsizes(sizes);
x0 =[];
str =[];
ts =[0 0];
function sys=mdlOutputs(t,x,u)
if (u(2)>=0&u(2)=pi/3&u(2)=2*pi/3&u(2)=pi&u(2)=4*pi/3&u(2)=5*pi/3&u(2)

Matlab Simulink中的 S函数报错,One or more output arguments not assigned during call to .程序如下,两输入三输出,实现根据输入量不同分段计算.检查了很多遍不知道哪里错了.【请高手告知如何具体修改,最好
1.你的程序只用了output函数,所以大可不必用s-function,Embedded MATLAB Function足矣,s-function检查起来很麻烦.
2.给几个建议.
a.case{1,2,4,9}取消后面的mdlTerminate
b.sizes.NumSampleTimes =0;ts =[];
c.最后一个elseif改成else
再试试.
3.glusera9216 说对一半.要用仿真调试,光看很麻烦.不过他不懂s-function