如何在 MATLAB 中的用户定义函数中设置当前轴?

how can i set current axes in user defined function in MATLAB?

我正在用 gui 编写程序。除了创建自动函数(例如 gui 中对象的回调)之外,我想创建用户定义的函数以在该程序的任何地方使用它们。所以我创建了我在下面写的网格化函数。

function meshing(p1, p2, p3, p4, p5, p6, p7, p8)

pmb = [( ( p1(1) + p5(1) ) / 2 ) ( ( p1(2) + p4(2) ) / 2 ) p1(3) ];
pmt = [( ( p1(1) + p5(1) ) / 2 ) ( ( p1(2) + p4(2) ) / 2 ) p2(3) ];

p23 = ( p2 + p3 ) / 2;

a = get(gcf);
axes(handles.axes3d);
scatter3(pmt(1),pmt(2),pmt(3))

但是当我 运行 它时,显示以下错误

Error while evaluating UIControl Callback

Undefined variable "handles" or class "handles.axes3d".

Error in SSF>meshing (line 897) axes(handles.axes3d);

但我的图形用户界面中有一个 axes3d。我能做什么

主要问题是 handles 未在您的函数中定义,因为它未作为输入传递。如果您查看所有内部定义的回调,它们都有 handles 作为输入。

在没有看到有关如何让 GUI 调用此 meshing 函数的确切代码的情况下,您可以让 GUI 的 guidata 访问 handles 变量从你的函数中。

handles = guidata(gcf);

然后你就可以在你的函数中使用它了

scatter3(pmt(1), pmt(2), pmt(3), 'Parent', handles.axes3d)