比方說,你的單選按鈕手柄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
除非您修改數據,否則您的代碼的性能不會受到傳遞數據的影響。道格·赫爾說here:
MATLAB使用通常被稱爲「寫入時複製」,以避免使工作區的功能在裏面輸入參數的 副本,直到或者 除非修改輸入參數系統。如果你不修改輸入參數,MATLAB將避免複製。
非常感謝HebeleHododo,這很好。但是現在運行該程序後,我意識到我沒有正確設置它。我現在需要做的是改變代碼,以便每當我點擊一個單選按鈕時,它將改變爲合適的情節,而不是我一直點擊計算按鈕。我知道這可能會涉及到對radiobutton組使用SelectionChangeFnc回調。我真的不想通過Apollo.m將來自plot_data.m的數據集傳遞到主GUI中。有沒有辦法只繪製所有的圖,然後從主GUI上打開或關閉它們? – roldy
@roldy我更新了我的答案。我猜想改變'可見'屬性是你想要的。 – HebeleHododo