フィルターのクリア

Why do I get 'Undefined function or variable'?

3 ビュー (過去 30 日間)
Ben25
Ben25 2019 年 6 月 18 日
コメント済み: Stephan 2019 年 6 月 20 日
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

回答 (1 件)

Stephan
Stephan 2019 年 6 月 18 日
編集済み: Stephan 2019 年 6 月 18 日
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 件のコメント
Ben25
Ben25 2019 年 6 月 19 日
My problem is very similar to the section 'Perform Nonlinear Grey Box Estimation' on this example https://ww2.mathworks.cn/help/ident/ug/estimating-coefficients-of-odes-to-fit-given-solution.html#d117e41137 . I don't see the problem.
Stephan
Stephan 2019 年 6 月 20 日
Maybe it helps if you attachyour data

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeNonlinear ARX Models についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by