Reference to non-existent field 'output' Error
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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(~, ~, ~)
0 commentaires
Réponse acceptée
Matt J
le 20 Juin 2019
I don't see where you've created handles.output. So, no wonder Matlab complains that it can't find it.
2 commentaires
Matt J
le 20 Juin 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
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Interactive Control and Callbacks dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!