matlab 在播放声音对象的同时定期调用私有函数

jexiocij  于 6个月前  发布在  Matlab
关注(0)|答案(1)|浏览(83)

在Matlab App Designer中,我有一个audioplayer对象:

app.player = audioplayer(Time./max(abs(Time)), Fs);

字符串
变量'Time'包含音频数据,变量'Fs'是采样率。我现在想在播放声音时每隔0.1秒执行一次函数'Playmov'。我尝试了以下方法:

app.player.TimerPeriod=0.1; % set the timer interval to 0.1 second
app.player.TimerFcn = @Playmov; % set the timer function to Playmov


函数定义如下:

methods (Access = private)
    function Playmov (app, event)
        disp('Hello World!')
        pause(1);
    end
end


当我运行代码时,我得到以下错误:
警告:执行为类internal定义的事件Executing的侦听器回调时出错。IntervalTimer:使用internal.Callback.execute时出错(第128行)未定义函数“Playmov”,用于类型“audiovideo.internal. audioplayerDesktop”的输入参数。在internal/IntervalTimer/onCustomEvent中(第154行)In internal.IntervalTimer>@(source,data)obj.onCustomEvent(data.Type,data.Data)(第115行)In Pencio/Channel/onCustomEvent(第477行)In Pencio.Channel>@(source,data)obj.onCustomEvent(data.Type,data.Data)(第409行)
我已经尝试了几个函数调用的修改,但我有点不知道它应该是什么样子。

c90pui9n

c90pui9n1#

感谢this论坛帖子,我能够解决这个问题。我需要将函数调用更改为

app.player.TimerFcn = {@app.Playmov}; % set the timer function to Playmov

字符串
以及相应的函数定义为:

methods (Access = private)
    function Playmov (app, obj, event)
        disp('Hello World!')
        pause(1);
    end
end


因此,您需要指定3个输入参数:第一个是app对象的句柄,因为函数是app的方法。第二个是计时器的句柄('obj'),第三个是计时器事件的事件数据句柄。

相关问题