在MATLAB中运行程序时,显示错误: 此上下文中不允许函数定义。 怎么修改

function [sys,x0,str,ts] = spacemodel(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
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 = 6;
sizes.NumInputs = 0;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [0 0];
function sys=mdlOutputs(t,x,u)
qd1=0.1*sin(t);
d_qd1=0.1*cos(t);
dd_qd1=-0.1*sin(t);
qd2=0.1*sin(t);
d_qd2=0.1*cos(t);
dd_qd2=-0.1*sin(t);

sys(1)=qd1;
sys(2)=d_qd1;
sys(3)=dd_qd1;
sys(4)=qd2;
sys(5)=d_qd2;
sys(6)=dd_qd2;
figure(1);
subplot(211);
plot(t,x1(:,1),'r',t,x1(:,2),'b');
xlabel('time(s)');ylabel('position tracking for link 1');
subplot(212);
plot(t,x2(:,1),'r',t,x2(:,2),'b');
xlabel('time(s)');ylabel('position tracking for link 2');
function [sys,x0,str,ts] = spacemodel(t,x,u,flag)
|
错误: 此上下文中不允许函数定义。

MATLAB程序运行错误后,切换到MATLAB命令行中,观察命令行中的错误信息,确定错误原因。
1、你可能写了个脚本程序文件,其中定义了子函数,在运行时就弹出了这个提示。一般情况下,在函数文件中才能定义子函数,在脚本文件中不允许定义子函数。这是个基本的要求。
2、一个函数,包括定义和调用两个过程。定义函数时的参数表称为形式参数,调用函数时的参数称为实际参数。形式参数只能是变量,不能是表达式或具体的数。
3、第一种可能 在命令窗口定义了函数,新建一个fungry1.m文件 把fungry1函数放到这里定义。第二种可能 调用fungry1函数格式不对,改为GM1=fungry1。
函数的文件里面可以嵌套定义函数。你把AHPInit1那个函数代码拿出来单独写一个AHPInit1.m文件,并和Untitled2.m保存在同一目录下。追问

答非所问,

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答