Matlab 调用在运行图形中定义的方法
我有以下Matlab 调用在运行图形中定义的方法,matlab,class,properties,function-handle,matlab-app-designer,Matlab,Class,Properties,Function Handle,Matlab App Designer,我有以下ui图: classdef gui < matlab.apps.AppBase ... function app = gui % Construct app end ... properties (Access = public) myFuncRef = @myFun end ... function myFun(app) % do something end ... end 但是我得
ui图
:
classdef gui < matlab.apps.AppBase
...
function app = gui
% Construct app
end
...
properties (Access = public)
myFuncRef = @myFun
end
...
function myFun(app)
% do something
end
...
end
但是我得到了错误
运行模拟时发生错误,模拟已停止
终止原因:未为值定义函数“subindex”
属于“matlab.graphics.GraphicsPlaceholder”类
提前谢谢 试试这个:
h = findobj(gcf,'-method','myFuncRef')
或
让我知道它是否有效
问题可能是,您使用findobj(0,'type','figure')得到的只是您的体形,这只是一个由App类模拟的Grahics Obejct。首先,我想解决您得到的错误。原因是调用
findobj()
返回的h
为空。相反,您应该使用findall(0,'Type','Figure',…)
我知道当您引用的方法是静态的时,这是可能的。考虑到以下类别:
classdef q45062561 < matlab.apps.AppBase
properties (Access = public)
myFuncRef = @q45062561.myFun
end
methods (Access = private, Static = true)
function myFun()
disp('This works!')
end
end
end
注意事项:
findobj
找到图形的句柄,而是在创建过程中存储它myFun
的修饰符不清楚,因此我不知道此解决方案是否适合您的情况public
和/或static
,而不是使用存储在属性中的函数引用谢谢你的回复。我尝试了序列h=findobj(0,'class','gui');funcRef=get(h,'myFuncRef');funcRef(h);它给了我同样的错误。当我尝试h=findobj(gcf,'-method',myFuncRef')时,它不会给我一个错误,但会打开一个窗口,但它不起作用。
h = findobj(0,'class','gui')
classdef q45062561 < matlab.apps.AppBase
properties (Access = public)
myFuncRef = @q45062561.myFun
end
methods (Access = private, Static = true)
function myFun()
disp('This works!')
end
end
end