我正在用Matlab编程我的第一个GUI。我已经构建了GUI的视觉方面,现在我正在编写回调函数。当我编写回调函数时,我需要传递两个句柄,但由于某种原因,只有一个句柄被传递给该函数。我确信这确实是一个很基本的问题,但我真的很努力地克服这个问题,并且在文档中找不到任何理由为什么这样做不起作用Matlab回调函数只能看到一个参数传递给它
回调函数用于按钮,两个用户输入的参数,然后使用这些数字来建立传递函数。这两个参数被输入到可编辑的文本框中,使用句柄orderEdit和timeConstEdit。我可以提取我需要的字符串,然后将其转换为数字数据格式。代码如下所示
首先,我设置回调标志按钮rtdButton
set(rtdButton, 'Callback', @rtdPlot);
回调函数的前两行如下(该功能的其余部分应工作,一旦我可以得到这些值):
function rtdPlot(orderEdit,timeConstEdit)
n = str2num(get(orderEdit, 'String'));
tau = str2num(get(timeConstEdit, 'String'));
但是我得到的错误
??? Error using ==> str2num at 33
Requires string or character array input.
Error in ==> mixingModel>rtdPlot at 148
tau = str2num(get(timeConstEdit, 'String'));
??? Error while evaluating uicontrol Callback
任何帮助Ø作如何做到这一点,将不胜感激
编辑:基于蜜蜂的帖子正确的代码如下:
集(rtdButton, '回调',{@ rtdPlot,orderEdit,timeConstEdit});
function rtdPlot(src,eventdata,arg1,arg2)
n = str2num(get(orderEdit, 'String'));
tau = str2num(get(timeConstEdit, 'String'));
干杯 约翰
另一个有用的习惯是'set(handle,'Callbac k',@(a,b)函数(a,b,c,d));' –
谢谢,那正是我需要的 – speeder1987