Syntax Question struct array - Unexpected MATLAB operator.
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Lenilein
el 21 de Mzo. de 2019
Comentada: Star Strider
el 21 de Mzo. de 2019
Hello,
I have been trying to reorganize my variables & parameters into struct arrays in order to group all corresponding to a same physical quantity (like temperature.air pressure.atmosphere etc.)
Some of these parameters are used in an ODE system (see below) and seeing the error I realize that I might have to abandon my idea of using struct arrays... Please let me know what I missed :)
Also, I would be happy if someone can send me some good literature on the proper use of struct arrays for modeling.
Thanks!!
>> NewCode
Error: File: myODE.m Line: 1 Column: 29
Unexpected MATLAB operator.
Error in
NewCode>@(L,y)myODE(L,y,AREA.CONV,AREA.COND,HEATTRANSF.AIRSHEET,MASSTRANSF.AIRSHEET,MASSFIBER,TEMP.CYL,MOLARWEIGHT.WATER,SPEED.PAPERMACHINE,GASCONSTANT,HEATTRANSF.CYLSHEET_REF,SPECIFICHEAT.FIBER,SPECIFICHEAT.WATER,PARTIALPRESSURE.VAPOR_MAXI_HOOD,TEMP.AIR_AFTER_STEAMHEATING)
Error in odearguments (line 90)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode45 (line 115)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
function dy = myODE(L,y,AREA.CONV,AREA.COND,HEATTRANSF.AIRSHEET,MASSTRANSF.AIRSHEET,MASSFIBER,TEMP.CYL,MOLARWEIGHT.WATER,SPEED.PAPERMACHINE,GASCONSTANT,HEATTRANSF.CYLSHEET_REF,SPECIFICHEAT.FIBER,SPECIFICHEAT.WATER,PARTIALPRESSURE.VAPOR_MAXI_HOOD,TEMP.AIR_AFTER_STEAMHEATING)
u=y(1); Tp=y(2);
dudL = myODE1(L,u,Tp,AREA.CONV,AREA.COND,HEATTRANSF.AIRSHEET,MASSTRANSF.AIRSHEET,MASSFIBER,TEMP.CYL,MOLARWEIGHT.WATER,SPEED.PAPERMACHINE,GASCONSTANT,HEATTRANSF.CYLSHEET_REF,SPECIFICHEAT.FIBER,SPECIFICHEAT.WATER,PARTIALPRESSURE.VAPOR_MAXI_HOOD,TEMP.AIR_AFTER_STEAMHEATING);
dTpdL = myODE2(L,u,Tp,AREA.CONV,AREA.COND,HEATTRANSF.AIRSHEET,MASSTRANSF.AIRSHEET,MASSFIBER,TEMP.CYL,MOLARWEIGHT.WATER,SPEED.PAPERMACHINE,GASCONSTANT,HEATTRANSF.CYLSHEET_REF,SPECIFICHEAT.FIBER,SPECIFICHEAT.WATER,PARTIALPRESSURE.VAPOR_MAXI_HOOD,TEMP.AIR_AFTER_STEAMHEATING);
dy = [dudL;dTpdL];
end
0 comentarios
Respuesta aceptada
Star Strider
el 21 de Mzo. de 2019
Refer to general arguments in your function definition, not specific variables.
So your function would be defined as:
function dy = myODE(L,y,A,B,C,D, ... ))
making appropriate changes in your ‘dudL’ and ‘dTpdL’ assignments, then call it as:
[T,Y] = ode45(@(L,y) myODE(L,y,AREA.CONV,AREA.COND,HEATTRANSF.AIRSHEET,MASSTRANSF.AIRSHEET, ...), tspan, y0);
2 comentarios
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!