2013-07-23 48 views
0

我有一個大小爲50 x 1的變量d和包含數字的類double。我正試圖在Matlab GUI的一個彈出菜單中包含這個。我目前做這個:Matlab GUI:從彈出菜單中選擇一個數字

d = cellfun(@num2str, num2cell(handles.zRaw(:)), 'uniformoutput', false); 
S.T2pm5 = uicontrol('Style', 'popupmenu', 'BackgroundColor', 'w', 'Parent',... 
      T2vbox6, 'String', {'Choose a Number', d{:}}, 'value', 1); 

然而,使用str2double(get(S.T2pm5, 'value'));輸出所有的數字變成一個字符串變量上面的彈出式菜單中的任何選擇。我怎樣才能輸出用戶通過彈出式菜單選擇的單個號碼,而不是所有存在的值?

回答

1

你可以通過添加同時使用的值,並在彈出菜單中的字符串屬性的回調。這裏有一個工作示例:

有一個回調創建一個彈出菜單

T2vbox6 = figure(); 
handles.zRaw = [10,20,30,40,50]; 
d = cellfun(@num2str, num2cell(handles.zRaw(:)), 'uniformoutput', false); 
S.T2pm5 = uicontrol('Style', 'popupmenu', 'BackgroundColor', 'w', 'Parent',... 
      T2vbox6, 'String', {'Choose a Number', d{:}}, 'value', 1,... 
      'callback', @someMenuCallBack); 
str2double(get(S.T2pm5, 'value')) 

然後定義回調:

function someMenuCallBack(hObj,event) 

d = str2double(get(hObj, 'String')); 
val = get(hObj,'Value'); 
disp(d(val)) 

這將顯示在命令行用戶選擇的值。

+0

我從更改變量類型的角度思考比這個解決方法更好,這當然工作得很好。謝謝! – Pupil

相關問題