为什么matlab中的uicontrol函数返回双精度值?

为什么matlab中的uicontrol函数返回双精度值?,matlab,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 f

我正在使用此命令创建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);

这是不同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版本不会有影响。

什么matlab版本?无法在R2014b中复制。您确定没有任何其他名为
uicontrol
?2014a的函数/变量。不,没有其他称为uicontrol的函数/变量。问题中的代码,而不是注释中的代码!您是如何调用回调的?您遇到了什么错误?是否可能在调用后覆盖
h
?如果您还没有这样做,您可以在
h=unicontrol(…)
处添加一个项目符号并检查
h
的值吗?