You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:45:06