matlab scrollpanel addNewLocationCallback:带有附加参数的回调函数

matlab scrollpanel addNewLocationCallback:带有附加参数的回调函数,matlab,callback,Matlab,Callback,我在matlab中使用overviewpanel显示大图像。 我想调整图像对比度以适应图像可见部分的值范围 我编写了一个函数adjcontrast(hIm,SPapi),它将图像句柄和滚动面板api作为参数,并进行此调整。我希望在scrollpanel的位置或放大率发生变化时调用此函数 使用SPapi.addNewLocationCallback(@adjcontrast),每当位置在我的滚动面板中更改时,就会调用adjcontrast(loc)。我怎样才能让它传递两个附加参数hIm和SPapi

我在matlab中使用overviewpanel显示大图像。 我想调整图像对比度以适应图像可见部分的值范围

我编写了一个函数
adjcontrast(hIm,SPapi)
,它将图像句柄和滚动面板api作为参数,并进行此调整。我希望在scrollpanel的位置或放大率发生变化时调用此函数


使用
SPapi.addNewLocationCallback(@adjcontrast)
,每当位置在我的滚动面板中更改时,就会调用
adjcontrast(loc)
。我怎样才能让它传递两个附加参数
hIm
SPapi

我不确定这对您的情况是否有帮助,但这是使用常用GUI组件执行此操作的方式:

您必须将其放在花括号内,如下所示:

set(hb,'Callback',{@pushbutton_callback,myvar,'--m'})
供参考:


跟进卢修斯的回答:
SPapi.addNewLocationCallback(@(~)adjcontrast(hIm,SPapi))
完成了任务。

SPapi.addNewLocationCallback({@adjcontrast,hIm,SPapi})在这种特殊情况下不起作用。你得到了什么eror消息?在imscrollpanel/sendNewLocation()中,下标索引必须是真正的正的或逻辑的做得好!如果你能简单地解释一下你为什么这样做,我肯定会给你一个+1:)什么是
@(~)
,它可以简化为
@()
?我也不太清楚它是如何工作的,但这是我的理解:
@(~)adjcontrast(hIm,SPapi)
是接受单个输入参数的函数的句柄,因此它可以称为
adjcontrast(loc)
。在第一次
SPapi.addNewLocationCallback
调用之后,
hIm
SPapi
值不再需要更新,我相信它们不会更新。@(~)是忽略第一个参数的匿名函数的句柄。如果使用@(),我会在
adjcontrast(loc)