String MatlabGUI:从弹出菜单中选择数字

String MatlabGUI:从弹出菜单中选择数字,string,matlab,user-interface,popup,double,String,Matlab,User Interface,Popup,Double,我有一个变量d,大小50x1和包含数字的双精度类。我试图将其包含在MatlabGUI的弹出菜单中。我目前正在这样做: d = cellfun(@num2str, num2cell(handles.zRaw(:)), 'uniformoutput', false); S.T2pm5 = uicontrol('Style', 'popupmenu', 'BackgroundColor', 'w', 'Parent',... T2vbox6, 'String', {'Choos

我有一个变量
d
,大小
50x1
和包含数字的双精度类。我试图将其包含在MatlabGUI的弹出菜单中。我目前正在这样做:

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'))从上述弹出菜单中进行任何选择将所有数字输出到单个字符串变量中。如何仅输出用户通过弹出菜单选择的单个数字,而不输出其中的所有值?

您可以通过添加一个使用弹出菜单的值和字符串属性的回调来实现这一点。下面是一个工作示例:

创建带有回调的弹出菜单

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))

这将在命令行显示用户选择的值

我更多的是从改变变量类型的角度考虑问题,而不是这个变通方法,当然,这个方法非常好用。谢谢