我在matlab程序中有这个句柄回调:
% set the callback, pass pointCloud to the callback function
set(h, 'WindowButtonDownFcn', {@callbackClickA3DPoint, pointCloud});
在callbackClickA3DPoint
函数中,我有一个变量,我希望在主程序的工作区中得到它。
function callbackClickA3DPoint(src, eventData, pointCloud)
selectedPoint = pointCloud(:, pointCloudIndex);
目前,callbackClickA3DPoint
不返回任何内容,selectedPoint
是我想要作为输出获取的变量。
答案 0 :(得分:1)
有很多方法可以实现这一目标。
一种方法是使callbackClickA3DPoint
成为主函数的子函数,然后回调可以看到并修改父函数中存在的任何变量。
function main()
set(h, 'WindowButtonDownFcn', {@callbackClickA3DPoint, pointCloud});
selectedPoint = [];
function callbackClickA3DPoint(src, evnt, pointcloud)
selectedPoint = pointCloud(:,pointCloudIndex);
end
end
UserData
另一种选择是将信息存储在图中的UserData
字段中。这将使任何函数可以访问,希望知道值和,您可以在UserData
中放置任意数据。
function callbackClickA3DPoint(src, evnt, pointcloud)
selectedPoint = pointCloud(:,pointCloudIndex);
set(src, 'UserData', selectedPoint)
end
% Then in another function
selectedPoint = get(gcf, 'UserData');
您也可以使用与UserData
方法类似的setappdata
和getappdata
。
function callbackClickA3DPoint(src, evnt, pointcloud)
selectedPoint = pointCloud(:,pointCloudIndex);
setappdata(src, 'SelectedPoint', selectedPoint)
end
% Then in another function
point = getappdata(gcf, 'SelectedPoint');