0

我有一个包含数字d的大小和类双精度变量。50 x 1我正在尝试将其包含在 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'));都会将所有数字输出到单个字符串变量中。如何仅输出用户通过弹出菜单选择的单个数字而不是那里存在的所有值?

4

1 回答 1

1

您可以通过添加一个同时使用弹出菜单的 value 和 string 属性的回调来做到这一点。这是一个工作示例:

使用回调创建弹出菜单

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

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

于 2013-07-23T16:13:18.257 回答