4

クリックして取得した座標をロードされたマトリックス MT と比較しようとしています。

マトリックス MT をロードし、それをハンドルに格納する「loadMT」関数を作成しました。終了すると、これが返されます (これは、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 coordinateで推奨されている方法で取得されました。コアコードは

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 に答える