在将参数传递给Matlab中的函数时使用varargin?

时间:2012-10-23 20:45:22

标签: matlab

我有一个名为viewcsi(varargin)的函数,我想最多传入三个变量。 第一个是我制作的MBSspectrum类,然后是一个字符串,也是一个数字。

viewcsi是一个回调函数,它被调用如下:

...'ButtonDownFcn','viewcsi(''pickvox_cb'', sp_viewcsi)');

sp_viewcsi是我制作的MBSspectrum类,位于工作区中。我希望能够添加另一个名为counter的参数,它是double类型的整数。

我想做这样的事情:

...'ButtonDownFcn','viewcsi(''pickvox_cb'', sp_viewcsi, counter)');

...'ButtonDownFcn', {@viewcsi, 'pickvox_cb', 'sp_viewcsi', counter)');

但是,当我执行最后两件事时,这些不起作用,因为他们不将“sp_viewcsi”保留为类,而是将其视为字符串。我该怎么做才能解决这个问题?我感觉它很简单,但我还没弄明白。

1 个答案:

答案 0 :(得分:1)

ButtonDownFcn只传递两个参数。你可以通过说

来欺骗它
...'ButtonDownFcn',@(a,b)viewcsi(a,b, counter));

以便回调会将ab传递给它,而Matlab会将其传递给counter的当前值。

另请参阅passing extra parameters上的文档。