Need assistance implementing ode45 in GUI

1 次查看(过去 30 天)
Hey not sure what to do about the errors I'm getting any assistance is greatly appreciated
My code:
function varargout = GUI_Assignment_Zuhs_Carey_Otic(varargin)
% GUI_ASSIGNMENT_ZUHS_CAREY_OTIC MATLAB code for GUI_Assignment_Zuhs_Carey_Otic.fig
% GUI_ASSIGNMENT_ZUHS_CAREY_OTIC, by itself, creates a new GUI_ASSIGNMENT_ZUHS_CAREY_OTIC or raises the existing
% singleton*.
%
% H = GUI_ASSIGNMENT_ZUHS_CAREY_OTIC returns the handle to a new GUI_ASSIGNMENT_ZUHS_CAREY_OTIC or the handle to
% the existing singleton*.
%
% GUI_ASSIGNMENT_ZUHS_CAREY_OTIC('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in GUI_ASSIGNMENT_ZUHS_CAREY_OTIC.M with the given input arguments.
%
% GUI_ASSIGNMENT_ZUHS_CAREY_OTIC('Property','Value',...) creates a new GUI_ASSIGNMENT_ZUHS_CAREY_OTIC or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before GUI_Assignment_Zuhs_Carey_Otic_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to GUI_Assignment_Zuhs_Carey_Otic_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help GUI_Assignment_Zuhs_Carey_Otic
% Last Modified by GUIDE v2.5 25-Apr-2018 19:32:31
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @GUI_Assignment_Zuhs_Carey_Otic_OpeningFcn, ...
'gui_OutputFcn', @GUI_Assignment_Zuhs_Carey_Otic_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before GUI_Assignment_Zuhs_Carey_Otic is made visible.
function GUI_Assignment_Zuhs_Carey_Otic_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to GUI_Assignment_Zuhs_Carey_Otic (see VARARGIN)
% Choose default command line output for GUI_Assignment_Zuhs_Carey_Otic
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes GUI_Assignment_Zuhs_Carey_Otic wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = GUI_Assignment_Zuhs_Carey_Otic_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
function Avalue_Callback(hObject, eventdata, handles)
% hObject handle to Avalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Avalue as text
% str2double(get(hObject,'String')) returns contents of Avalue as a double
% --- Executes during object creation, after setting all properties.
function Avalue_CreateFcn(hObject, eventdata, handles)
% hObject handle to Avalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function Bvalue_Callback(hObject, eventdata, handles)
% hObject handle to Bvalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Bvalue as text
% str2double(get(hObject,'String')) returns contents of Bvalue as a double
% --- Executes during object creation, after setting all properties.
function Bvalue_CreateFcn(hObject, eventdata, handles)
% hObject handle to Bvalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function Cvalue_Callback(hObject, eventdata, handles)
% hObject handle to Cvalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Cvalue as text
% str2double(get(hObject,'String')) returns contents of Cvalue as a double
% --- Executes during object creation, after setting all properties.
function Cvalue_CreateFcn(hObject, eventdata, handles)
% hObject handle to Cvalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function Dvalue_Callback(hObject, eventdata, handles)
% hObject handle to Dvalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Dvalue as text
% str2double(get(hObject,'String')) returns contents of Dvalue as a double
% --- Executes during object creation, after setting all properties.
function Dvalue_CreateFcn(hObject, eventdata, handles)
% hObject handle to Dvalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function Evalue_Callback(hObject, eventdata, handles)
% hObject handle to Evalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Evalue as text
% str2double(get(hObject,'String')) returns contents of Evalue as a double
% --- Executes during object creation, after setting all properties.
function Evalue_CreateFcn(hObject, eventdata, handles)
% hObject handle to Evalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function Fvalue_Callback(hObject, eventdata, handles)
% hObject handle to Fvalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Fvalue as text
% str2double(get(hObject,'String')) returns contents of Fvalue as a double
% --- Executes during object creation, after setting all properties.
function Fvalue_CreateFcn(hObject, eventdata, handles)
% hObject handle to Fvalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function tvalue_Callback(hObject, eventdata, handles)
% hObject handle to tvalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of tvalue as text
% str2double(get(hObject,'String')) returns contents of tvalue as a double
% --- Executes during object creation, after setting all properties.
function tvalue_CreateFcn(hObject, eventdata, handles)
% hObject handle to tvalue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in Runbutton.
function Runbutton_Callback(hObject, eventdata, handles)
% hObject handle to Runbutton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
A=str2double(get(handles.Avalue, 'string'));
B=str2double(get(handles.Bvalue, 'string'));
C=str2double(get(handles.Cvalue, 'string'));
E=str2double(get(handles.Evalue, 'string'));
F=str2double(get(handles.Fvalue, 'string'));
tmax=str2double(get(handles.tvalue, 'string'));
output=func(A,B,C,E,F,tmax)
ydot=funct(t,Y)
plot(t, y(:,1), 'Parent', handles.axes1)
grid on
plot(t, y(:,2), 'Parent', handles.axes2)
plot(t, y(:,3), 'Parent', handles.axes3)
plot3(y(:,1),y(:,2),y(:,3), 'Parent', handles.axes4)
function output=func(A,B,C,E,F,tmax)
[t,y]=ode45(@funct,[0 tmax],[0 0 0]);
function ydot=funct(t,y)
F2=F;
B2=B;
C2=C;
E2=E;
A2=A;
ydot(1)=y(2);
ydot(2)=y(3);
ydot(3)=((F2*exp(-0.1*t)*cos(t))+(B2*y(3))-(C2*t*y(2))+(E2*y(1)))/A2;
ydot=ydot';
Here are my errors:
>> GUI_Assignment_Zuhs_Carey_Otic
Undefined function or variable 'F'.
Error in GUI_Assignment_Zuhs_Carey_Otic>funct (line 262)
F2=F;
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);
Error in GUI_Assignment_Zuhs_Carey_Otic>func (line 260)
[t,y]=ode45(@funct,[0 tmax],[0 0 0]);
Error in GUI_Assignment_Zuhs_Carey_Otic>Runbutton_Callback (line 251)
output=func(A,B,C,E,F,tmax)
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in GUI_Assignment_Zuhs_Carey_Otic (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)GUI_Assignment_Zuhs_Carey_Otic('Runbutton_Callback',
hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback.

回答(1 个)

Walter Roberson
Walter Roberson 2018-4-26
Your funct() is not nested in your func(), so they do not share variables. You should have parameterized like I said before. http://www.mathworks.com/help/matlab/math/parameterizing-functions.html
[t, y] = ode45(@(t,y) funct(t, y, A, B, C, E, F), [0 tmax], [0 0 0]);
with
function ydot = funct(t, y, A, B, C, E, F)

类别

Help CenterFile Exchange 中查找有关 Solver Outputs and Iterative Display 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by