Why do I get 'Undefined function or variable'?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (1)
Stephan
am 18 Jun. 2019
Bearbeitet: Stephan
am 18 Jun. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Nonlinear ARX Models finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!