[已答复] 调用ode45时,未对输出参数赋值?大家知道是怎么回事吗?

[复制链接]
yangzf 发表于 7 天前
function ZNNConvergence(gamma)
tspan=[0 10];
options=odeset('Mass',@MatrixM,'MStateDep','none');
for iter=1:5
    x0=4*(rand(6,1)-0.5*ones(6,1));
    [t,x]=ode45(@ZNNRightHandSide,tspan,x0,options,gamma);
    xStar=[sin(t) cos(t) -cos(t) sin(t) zeros(length(t),1) ones(length(t),1)];
    for k=1:6
        j=[1 4 2 5 3 6];
        subplot(2,3,j(k));
        plot(t,x(:,k));
        hold on;
        plot(t,xStar(:,k),'r:');
        hold on
    end
end


function y=ZNNRightHandSide(t,x)
if nargin==2,gamma=1;
end
A=LTVEmatrixA(t,x);
B=LTVEmatrixB(t,x);
C=LTVEmatrixC(t,x);
dotA=DiffA(t,x);
dotB=DiffB(t,x);
dotC=DiffC(t,x);
[m,n]=size(C);
vecC=reshape(C,m*n,1);
vecDotC=reshape(dotC,m*n,1);
M1=kron(B',dotA);
M2=kron(dotB',A);
M3=kron(B',A);
y=-M1*x-M2*X+vecDotC-gamma*AFMpowersigmoid(M3*x-vecC);

结果显示:
ZNNConvergence(1)
出错 ode45 (line 1)
function varargout = ode45(ode,tspan,y0,options,varargin)

调用 "D:\Program Files\MATLAB\R2014a\toolbox\matlab\funfun\ode45.m>ode45" 时,未对输出参数 "varargout" (可能还包括其他参数)赋值。

出错 ZNNConvergence (line 6)
    [t,y]=ode45(@ZNNRightHandSide,tspan,x0,options,gamma);

有人知道这是因为什么吗?谢谢大家啦!!!

3 条回复


wjb986555360 发表于 4 天前
你的gamma变量是一个需要输入的参数,你函数定义方式不对,应该是function y=ZNNRightHandSide(t,x,gamma)

yangzf 发表于 4 天前
wjb986555360 发表于 2022-9-25 09:58
你的gamma变量是一个需要输入的参数,你函数定义方式不对,应该是function y=ZNNRightHandSide(t,x,gamma)
好的,谢谢您!不好意思我打少了,您提到的这些都有,但是结果依旧提示未对输入参数赋值,您知道怎么回事吗?

hzlhm 发表于 昨天 12:42
ode45函数有问题。ode45函数格式是
[t,y] = ode45(odefun,tspan,y0,options)
所以,你这里无法调用gamma变量值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表