Matlab App Designer播放音频时定时调用私有函数报错求助
问题解决:Matlab App Designer中audioplayer定时器回调绑定错误
错误原因
你设置的app.player.TimerFcn = @Playmov没有绑定App实例,当audioplayer的定时器触发时,会将自身作为第一个参数传递给回调函数,但Playmov是App类的私有方法,必须通过App对象才能调用,导致Matlab找不到对应函数,抛出"Undefined function 'Playmov'"错误。
修正方案
1. 调整TimerFcn的绑定方式
将定时器回调改为绑定App实例的匿名函数,确保调用上下文正确:
app.player.TimerPeriod = 0.1; % 设置0.1秒间隔 app.player.TimerFcn = @(src, evt) app.Playmov(src, evt); % 绑定App实例调用私有方法
2. 匹配私有方法的参数列表
私有方法Playmov需要接收App实例、定时器源对象和事件参数,调整方法定义:
methods (Access = private) function Playmov(app, src, evt) disp('Hello World!'); % 注意:避免在回调中使用pause(1),会阻塞定时器线程,导致实际执行间隔远超0.1秒 % 若需延迟操作,建议使用独立定时器实现非阻塞逻辑 end end
原理说明
- 匿名函数
@(src, evt)接收定时器传递的源对象(audioplayer)和事件参数 - 通过
app.Playmov(src, evt)明确调用当前App实例的私有方法,确保方法能正确识别App上下文,同时接收定时器的回调参数
内容的提问来源于stack exchange,提问作者Matthias La
相关产品推荐
相关产品推荐

