Кажется, вы уже исправили проблему.Тем не менее, я переписал ваш пример и попытался немного упростить его:
function testgui2()
data = [1:11 ; 10:20]'; %'# data
handles = [];
%# create GUI
handles.hFig = figure('Name','GUI Test', 'NumberTitle','off', ...
'Units','pixels', 'Position',[100 100 700 800], ...
'MenuBar','none', 'Visible','off');
handles.hAx = axes('Parent',handles.hFig, ...
'Units','pixels', 'Position',[230 50 450 700]);
handles.hPB = uicontrol('Style','pushbutton', 'Parent',handles.hFig, ...
'String','Delete Selection',...
'Units','pixels', 'Position',[50 7 100 35],...
'Callback',@button_callback);
handles.hLB = uicontrol('Style','listbox', 'Parent',handles.hFig, ...
'String',data(:,2), 'Value',1, ...
'Units','pixels', 'Position',[50 50 100 700], ...
'Callback',@listbox_callback);
set(handles.hFig, 'Visible','on')
%# plot data and highlighted point
handles.hPlot = plot(data(:,1), data(:,2), 'bo');
handles.hLine = line('XData',data(1,1), 'YData',data(1,2), ...
'Marker','o', 'MarkerSize',10, 'Color','b', 'MarkerFaceColor','b');
xlabel('Index Number'), ylabel('Variable x')
set(handles.hAx, 'XLimMode','manual', 'YLimMode','manual') %# fix limits
%# callback function for button
function button_callback(varargin)
%# get current selection
selected = get(handles.hLB, 'Value');
if selected==0, return, end
%# remove data point
data(selected,:) = [];
%# update the listbox
set(handles.hLB, 'String',data(:,2))
set(handles.hLB, 'Value',min(selected,size(data,1)))
%# update plot
set(handles.hPlot, 'XData',data(:,1), 'YData',data(:,2))
listbox_callback()
end
%# callback function for listbox
function listbox_callback(varargin)
%# get current selection
selected = get(handles.hLB, 'Value');
if selected==0, selected = []; end
%# update plot (highlighted point)
set(handles.hLine, 'XData',data(selected,1), 'YData',data(selected,2))
end
end