假设您的单选按钮句柄是rb1
并且rb2
它们存储在handles
结构中。'Value'
然后,您可以使用该属性检查它们是否被选中。
function apollo(hObj, eventdata, handles)
if get(handles.hrb1, 'Value')
% do stuff
elseif get(handles.hrb2, 'Value')
% do other stuff
end
end
更新:回应 OP 的评论SelectionChangeFcn
:
如果您没有大量数据,您可以在开始时将它们全部绘制出来,然后更改Visible
绘图的属性。
function cbSelectionChange(hObj, eventdata, handles)
rbTag = get(eventData.NewValue, 'Tag');
switch rbTag
case 'rb1'
set(handles.plotHandle1, 'Visible', 'On');
set(handles.plotHandle2, 'Visible', 'Off');
case 'rb2'
set(handles.plotHandle2, 'Visible', 'On');
set(handles.plotHandle1, 'Visible', 'Off');
end
end
如果您确实有很多数据,您可以从SelectionChangeFcn
回调中调用 plot_data 函数。
function cbSelectionChange(hObj, eventdata, handles)
rbTag = get(eventData.NewValue, 'Tag');
switch rbTag
case 'rb1'
plot_data(yourArguments1);
case 'rb2'
plot_data(yourArguments2);
end
end
除非您对其进行修改,否则传递数据不会影响代码的性能。道格赫尔在这里说:
MATLAB 使用通常称为“写入时复制”的系统来避免在函数工作区中复制输入参数,除非您修改输入参数。如果您不修改输入参数,MATLAB 将避免制作副本。