Why do I get 'Undefined function or variable'?
13 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I'm attempting to run 'ode45' and changed the function file code to include an input vector 'u'. Now I get an error stating that 'u' is undefined. I don't know where to define 'u', since it is defined in the function?
(Undefined function or variable 'u'.)
(Error in ode45_ex>@(t,x)DOF1damped(t,x,u,w,u0,m,k,c,varargin))
the function file is:
function [dx, y] = DOF1damped(t, x, u, w, u0, m, k, c, varargin)
u = [u0*sin(w*t); u0*w*cos(w*t)];
y = [x(1);x(2)];
dx = [x(2) ;((-k/m).*x(1) - (c/m).*x(2) + (k/m).*u(1) + (c/m).*u(2))];
end
the ode file is:
clear
close all
clc
u0 = 1; %amplitude ()
w = 1; %hz
m = 0.85048569375; %kg
k = 356.9085; % N/m
c = 10; %N/m*s
tspan = [0 10];
x0 = [0;0];
[t, x] = ode45(@(t,x)DOF1damped(t, x, u, w, u0, m, k, c, varargin), tspan, x0);
data = iddata(x, t, .1);
plot(t, x);
Thanks for any help
0 comentarios
Respuestas (1)
Stephan
el 18 de Jun. de 2019
Editada: Stephan
el 18 de Jun. de 2019
If u is calculated inside the function it should not be an input argument of the function. Also delete varargin - no need - results in error, because it is a matlab function already:
u0 = 1; %amplitude ()
w = 1; %hz
m = 0.85048569375; %kg
k = 356.9085; % N/m
c = 10; %N/m*s
tspan = [0 10];
x0 = [0;0];
[t, x] = ode45(@(t,x)DOF1damped(t, x, w, u0, m, k, c), tspan, x0);
data = iddata(x, t, .1);
plot(t, x);
function [dx, y] = DOF1damped(t, x, w, u0, m, k, c)
u = [u0*sin(w*t); u0*w*cos(w*t)];
y = [x(1);x(2)];
dx = [x(2) ;((-k/m).*x(1) - (c/m).*x(2) + (k/m).*u(1) + (c/m).*u(2))];
end
5 comentarios
Ver también
Categorías
Más información sobre Grey-Box Model Estimation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!