为什么uicontrol函数在matlab中返回double值?

时间:2017-06-05 09:23:26

标签: matlab

我正在使用此命令创建一个uicontrol对象

h = uicontrol('style','listbox','max',10,'min',1,'Position',[200 200 200 200],'string',sheets,'Callback',@listbox1_Callback);

它返回h的随机双精度值(0.017,0.035等),因此在执行回调时会产生错误,因为没有创建对象句柄。

完整代码

FileName = uigetfile('*.xlsx','Select the data file',filepath);
[status,sheets,xlFormat] = xlsfinfo(FileName)
h = uicontrol('style','listbox','max',10,'min',1,'Position',[200 200 200 200],'string',sheets,'Callback',@listbox1_Callback);

1 个答案:

答案 0 :(得分:1)

这是不同Matlab版本的行为。要获得uicontrol的属性,无论h是double还是handle,都可以使用:

str = get(h, 'String'); % work for all versions

后来Matlab支持更方便的方法:

str = h.String; % only supported for later versions where h is handle

如果您希望在早期版本中使用后一种语法,则可以执行以下操作:

h = handle(h); % convert double to handle for earlier matlab

然后你可以像以后的matlab一样做。如果您担心不同版本的兼容性,上面的命令会对以后的matlab版本造成伤害。