4

我正在尝试将点击获得的坐标与加载的矩阵 MT 进行比较。

我编写了一个“loadMT”函数来加载矩阵 MT,将其存储到句柄中,完成后它给出了这个(我相信这是 MT 已存储在句柄中的标志)

        figure1: 173.0090
          y_lbl: 11.0092
lbl_last_action: 10.0092
 AverageModulus: 9.0092
          axes1: 4.0092
         slider: 3.0092
         LoadMT: 0.0092
      LoadImage: 174.0090
         output: 173.0090
      frameName: [599x1 struct]
       pathname: [1x43 char]
       no_frame: 599
             MT: [4318x7 double]
   currentframe: 101

鼠标点击坐标是通过这篇文章MATLAB how to get mouse click coordinates推荐的方式获得的。核心代码是

imageHandle = imshow(imObj);
set(imageHandle,'ButtonDownFcn',@ImageClickCallback);

function ImageClickCallback ( objectHandle , eventData )
MT=handles.MT;
axesHandle  = get(objectHandle,'Parent');
coordinates = get(axesHandle,'CurrentPoint'); 
coordinates = coordinates(1,1:2);

它已经奏效了,我得到了坐标。(没有 MT=handles.MT 行)

但是,当我单击图像时,它给出了这个错误,意味着我无法从句柄中提取 MT

Undefined variable "handles" or class "handles.MT".

Error in GUI>ImageClickCallback (line 159)
MT=handles.MT;

我如何将 MT 从句柄传递到这里的局部变量?我的搜索结果真的让我很困惑。提前致谢

4

1 回答 1

4

尝试这个

set(imageHandle,'ButtonDownFcn',{@ImageClickCallback,handles};

同样在您的函数 ImageClickCallback 中,您需要为句柄添加一个类别,如下所示:

function ImageClickCallback(objectHandle, eventData, handles)

于 2013-11-20T15:55:14.020 回答