大家。可能,我在这里犯了一个完全愚蠢的错误,但这是问题:
我使用MATLAB指南制作了GUI。我在GUI中添加了一些复选框,以便他们在检查时会在Axes2上绘制某些内容,然后将其删除。如果您提出要求,将会有其他地块,因此可以保持和关闭。它是这样的工作:
function checkbox1_Callback(hObject, eventdata, handles)
% Hint: get(hObject,'Value') returns toggle state of checkbox1
if get(hObject, 'Value') == 1
axes(handles.axes2);
x = handles.x;
distanceX_Plot = evalin('base', 'CAN2_MPC_C19_Dist_X_VehObj0_Cval_MPC');
hold on;
distanceX_Plotted = plot(x,distanceX_Plot, 'r');
legend('Distance X')
hold off;
else
delete(distanceX_Plotted);
end
但是,如果零件被下划线中的demandx_plotter,则说变量可能未使用,并且在其他语句中使用的第二个decterx_plotts表示可以在定义它之前使用变量。
完全错误就是这样:
未定义的函数或变量'dandsx_plotted'。
untitled中的错误> checkbox1_callback(行224)delete(dandsx_plotted);
gui_mainfcn中的错误(第95行)feval(varargin {:});
untitled(第42行)gui_mainfcn(gui_state,varargin {:});
matlab.graphics.internal.figfile.figfile.figfile/read>@(hobject,eventdata)intere
错误('checkbox1_callback',hobject',hobject',eventdata,gudata(hobject))错误,同时评估uicontrol callback
感谢您的任何帮助。
您的当前功能将:
-
创建一组轴和绘图数据。手柄
distanceX_Plotted
可以访问此图。 -
尝试删除
distanceX_Plotted
,因为它没有输入IF-ELSE块的第一部分,因此不存在。
如果要在轴handle.axis2
上绘制某些内容或删除它,则需要在通缉轴上绘制或删除轴(而不是绘图):
function checkbox1_Callback(hObject, eventdata, handles)
% Hint: get(hObject,'Value') returns toggle state of checkbox1
if get(hObject, 'Value') == 1
x = handles.x;
distanceX_Plot = evalin('base', 'CAN2_MPC_C19_Dist_X_VehObj0_Cval_MPC');
hold on;
distanceX_Plotted = plot(x,distanceX_Plot, 'r','Parent', handles.axes2); % modified
legend('Distance X')
hold off;
else
delete(handles.axes2); % modified
end
编辑:如果您想删除绘制的最后一行,请在else
块中写下此内容:
if ~isempty(handles.axes2.Children)
delete(handles.axes2.Children(end));
end
它将删除您在axes2
上打印的最后一行。