problem with nested function in GUIDE

1 次查看(过去 30 天)
I have got following set of code - It is basically functioning based on the plot data obtained previously. Main function gets all the data and creates a popupmenu. Nested function help me get histogram for each plot individually.
function pushbuttonhistogram_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonhistogram (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global filelist;
global subitems_plot;
global subsubitems_plot;
item_index = get(handles.listboxitems, 'Value');
items_list = cellstr(get(handles.listboxitems, 'String'));
item = items_list{item_index};
subitem_index = get(handles.listboxsubitems, 'Value');
subitems_list = cellstr(get(handles.listboxsubitems, 'String'));
subitem = subitems_list{subitem_index};
subsubitem_index = get(handles.listboxsubsubitems, 'Value');
subsubitems_list = cellstr(get(handles.listboxsubsubitems, 'String'));
subsubitem = subsubitems_list{subsubitem_index};
f = figure('Name','Histogram Plot','NumberTitle','off');
figure(f);
len = length(filelist);
ax = axes('Parent',f,'position',[0.13 0.28 0.77 0.54]);
uicontrol('Parent',f,'Style','popupmenu', 'String', filelist, 'Position',[81,54,419,23], 'Callback', @fileselect);
function fileselect(source,event)
val = source.Value;
if isempty(subsubitems_plot)
hist(ax, subitems_plot(:, val));
title(ax, {item;subitem});
else
hist(ax, subsubitems_plot);
title(ax, {item;subitem;subsubitem});
end
end
Problem: Not getting any kind of plot. If I add end after nested functioin am getting error -
Illegal use of reserved keyword "end".
and without 'end' nested function does not connect with main function.
  2 个评论
Ameer Hamza
Ameer Hamza 2018-5-2
Although not an answer to your question, you can create a separate function file and place it in MATLAB path instead of creating nested function. Another solution is to simply place it as a normal function inside m file of the GUIDE. But it depends on your application, whether a nested function is necessary or not.

请先登录,再进行评论。

采纳的回答

Jan
Jan 2018-5-2
The required format is clear: The main functions and nested function must be closed by an "end":
function main
function nested1
end
end
function sub1
end
It seems like there is a missing end anywhere in your code outside the posted part. Please control this by an auto-indentation: Ctrl-A Ctrl-I . Does the last line of the file end in the first column?
  1 个评论
Ghenji
Ghenji 2018-5-2
编辑:Ghenji 2018-5-2
Thank you Jan. Seems like putting end at right place was the only problem after all. All sorted now.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Migrate GUIDE Apps 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by