编辑输入字符串类型MATLAB的问题



我有一个错误:

Error using edit (line 31)
The input must be a string.
Error in showTF>callback_update_model (line 507)
    vars.dropheight = str2num(get(edit(2),'String'));

我的代码在这里:

params = varargin{1};

这是两个输入之一:

edit(2) = uicontrol('Parent',jCalc,'Units','Pixels','Position',[300 20 100 20],'String',num2str(params(2)),'Style','edit',...
            'Callback',@edit_2,...
            'BackgroundColor',[1 1 1],'ToolTipString','Puck Drop Height');

按钮回调:

function callback_update_model(~,~)
    vars.dropheight = str2num(get(edit(2),'String'));
    vars.armradius = str2num(get(edit(1),'String'));
    kiddies = get(guiel.hAX(3),'Children');
    delete(kiddies); 
    clear kiddies;
    set(guiel.tfPanel,'Visible','off','Position',cnst.tfPanelpos);
    set(guiel.hAX(1),'Position',cnst.axpos1);
    if ishandle(guiel.hAX(2)) 
    set(guiel.hAX(2),'Position',cnst.axpos2);
    end
    eval(get(guiel.hPB(4),'Callback'));
end

varargin显示1X1 cell [2],我很困惑我如何转换输入值。

您的问题是您已经使用了edit作为变量,但是它也是一个内置函数,期望文件名作为字符串输入,因此您的错误。您应该避免使用这样的内置功能,因为它通常会导致问题和歧义。

通常,该变量将优先考虑并使用而不是阴影函数。在这种情况下,该函数似乎是通过2的输入来调用的,而不是用2索引的变量。这可能是因为callback_update_model功能可能无法访问edit变量。这是您应该做的解决此问题:

  1. 将变量的名称更改为诸如hEdit之类的(我通常是前言变量,这些变量将图形对象存储使用h)。

  2. 检查callback_update_model是否正确嵌套了,以便它可以访问hEdit或以另一种方式提供hEdit

相关内容

  • 没有找到相关文章

最新更新