谁能解释一下此Matlab代码中的函数句柄如何工作

问题描述 投票:0回答:1

有人可以解释一下这段代码中的函数处理方式!当前,代码没有跳转到该函数,我正在尝试对其进行修复。能否请您解释一下,如何在不使用函数句柄的情况下编写相同的代码。该代码是为Matlab GUI编写的。

%...
handles.Data.Audio.TimerFcn={@TimerFcn, handles};
%...
function TimerFcn(audio,~,handles)
set(handles.Graphics.Line(2,handles.AudioNum),'XData',handles.Data.TS.Time((handle.Data.k+1)*handles.Data.fs+audio.CurrentSample*[1,1]));
set(handles.Graphics.Line(2,handles.AudioNum),'Color' , 'y');
guidata(handles.Fig,handles);

因此,代码正在使用“ TimerFcn”函数的函数句柄,而我真的不太了解它是如何工作的。因此,我无法修复该错误。

matlab handle function-handle
1个回答
0
投票

handles不是一个函数,而是一个在MATLAB GUI中存储有关元素信息的结构。

其余代码应有助于解决您的问题。我用您发布的代码可以理解的是,您正在将函数TimerFcn分配给Data.Audio中的对象。因此,如果未达到功能TimerFcn是因为负责此功能的对象没有设法运行它,例如如果它是必须等待X秒才能运行此功能的计时器,则可能是未正确设置(或者等待时间太长)。

希望我能帮助您理解问题。

© www.soinside.com 2019 - 2024. All rights reserved.