Reference to non-existent field 'output' Error

4 views (last 30 days)
Hello,
I'm afraid I can't find my mistake. The program is without problems so far and now I get the following error when starting the program:
Reference to non-existent field 'output'.
Error in Spiel>Spiel_OutputFcn (line 46)
varargout{1} = handles.output;
Error in gui_mainfcn (line 264)
feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);
Error in Spiel (line 16)
gui_mainfcn(gui_State, varargin{:});
My programming skills are not good, but it should be understandable ;)
function varargout = Spiel(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Spiel_OpeningFcn, ...
'gui_OutputFcn', @Spiel_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
function Spiel_OpeningFcn(hObject, ~, handles)
handles.Flag = 0;
handles.Flag2 = 0;
handles.Plotsize=0.0015;
handles.Database = load('Database.mat');
handles.Logo = imread('Logo.png');
handles.Logo_small = imread('Logo_small.png');
handles.Correct.Right = 0;
handles.Correct.Count = 0;
handles.Correct.Percent = 0;
axes(handles.Plot_small)
imshow(handles.Logo_small)
axes(handles.Plot)
set(handles.Plot,'visible','off');
imshow(handles.Logo)
% Update handles structure
guidata(hObject, handles);
function varargout = Spiel_OutputFcn(~,~, handles)
varargout{1} = handles.output;
function B_New_Callback(hObject, ~, handles)
Stadtteil = 0;
handles.Flag = 1;
handles.Flag2 = 0;
set(handles.B_Solution,'BackgroundColor',[0.94 0.94 0.94]);
set(handles.B_Solution, 'string', 'Lösung anzeigen');
% reset plot window
axes(handles.Plot)
cla('reset')
imshow(handles.Logo)
while Stadtteil == 0
StadtteilR = randi(5);
if get(eval(['handles.C_' num2str(StadtteilR)]), 'Value') == 1
Stadtteil = StadtteilR;
end
end
switch Stadtteil
case 1
handles.Stadtteilname = 'Kernstadt';
case 2
handles.Stadtteilname = 'Heilsberg';
case 3
handles.Stadtteilname = 'Massenheim';
case 4
handles.Stadtteilname = 'Dortelweil';
case 5
handles.Stadtteilname = 'Gronau';
end
handles.Strasse = randi(length(eval(['handles.Database.' handles.Stadtteilname '.Street'])));
set(handles.T_Street, 'String', eval(['handles.Database.' handles.Stadtteilname '.Street(' num2str(handles.Strasse) ')']))
guidata(hObject, handles);
function B_Solution_Callback(hObject, ~ , handles)
set(hObject, 'UserData', true);
if handles.Flag == 0
return
end
handles.Flag2 = 1;
handles.Correct.Count = handles.Correct.Count + 1;
if strcmp(handles.Stadtteilname, handles.SelectStadtteil) == 1
set(handles.B_Solution,'BackgroundColor','green');
set(handles.B_Solution, 'string', 'Richtig!');
handles.Correct.Right = handles.Correct.Right + 1;
else
set(handles.B_Solution,'BackgroundColor','red');
set(handles.B_Solution, 'string', ['Falsch, richtig ist ' handles.Stadtteilname]);
end
handles.lon = eval(['handles.Database.' handles.Stadtteilname '.lon(' num2str(handles.Strasse) ')']);
handles.lat = eval(['handles.Database.' handles.Stadtteilname '.lat(' num2str(handles.Strasse) ')']);
guidata(hObject, handles);
Plotting(handles)
Lights(hObject,handles)
function Lights(hObject,handles)
handles.Correct.Percent = handles.Correct.Right / handles.Correct.Count;
if handles.Correct.Percent > 0.8
set(handles.T_Lights, 'BackgroundColor',[0 1 0])
elseif handles.Correct.Percent > 0.4
set(handles.T_Lights, 'BackgroundColor',[1 1 0])
else
set(handles.T_Lights, 'BackgroundColor',[1 0 0])
end
set(handles.T_Lights, 'string', sprintf('%d %% ', round(handles.Correct.Percent*100,0)));
guidata(hObject,handles);
function Plotting(handles)
plot(handles.lon, handles.lat, '.r', 'MarkerSize', 20)
set(handles.Plot,'visible','off');
handles.Plot = Map([handles.lon-(handles.Plotsize*1.57) handles.lon+(handles.Plotsize*1.57) handles.lat-handles.Plotsize handles.lat+handles.Plotsize]);
handles.Flag2 = 1;
function R_1_Callback(hObject, ~, handles)
handles.SelectStadtteil = 'Kernstadt';
guidata(hObject, handles);
function R_2_Callback(hObject, ~, handles)
handles.SelectStadtteil = 'Heilsberg';
guidata(hObject, handles);
function R_3_Callback(hObject, ~, handles)
handles.SelectStadtteil = 'Massenheim';
guidata(hObject, handles);
function R_4_Callback(hObject, ~, handles)
handles.SelectStadtteil = 'Dortelweil';
guidata(hObject, handles);
function R_5_Callback(hObject, ~, handles)
handles.SelectStadtteil = 'Gronau';
guidata(hObject, handles);
function C_1_Callback(~, ~, ~)
function C_2_Callback(~, ~, ~)
function C_3_Callback(~, ~, ~)
function C_5_Callback(~, ~, ~)
function C_4_Callback(~, ~, ~)

Accepted Answer

Matt J
Matt J on 20 Jun 2019
I don't see where you've created handles.output. So, no wonder Matlab complains that it can't find it.
  2 Comments
Cross
Cross on 20 Jun 2019
Edited: Cross on 20 Jun 2019
I didn't write this function, it was created automatically. Where do I have to insert which code?
I am still a newbie
Matt J
Matt J on 20 Jun 2019
If you don't care what output the GUI returns, you can just change the OutputFcn to return something arbitrary,
function varargout = Spiel_OutputFcn(~,~, handles)
varargout{1} = [];
end

Sign in to comment.

More Answers (0)

Categories

Find more on Interactive Control and Callbacks in Help Center and File Exchange

Tags

Products


Release

R2019a

Community Treasure Hunt

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

Start Hunting!