Может кто-нибудь объяснить, как работает дескриптор функции в этом коде Matlab - PullRequest
0 голосов
/ 24 февраля 2020

Может кто-нибудь объяснить, как работает дескриптор функции в этом коде! В настоящее время код не переходит к функции, и я пытаюсь это исправить. И можете ли вы объяснить, как я могу написать тот же код, не используя дескриптор функции. Этот код написан для 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», и я не совсем понимаю, как это работает. Поэтому я не могу исправить ошибку.

1 Ответ

0 голосов
/ 25 февраля 2020

handles это не функция, а структура, которая хранит информацию об элементах в вашем MATLAB GUI.

Остальная часть кода должна помочь решить вашу проблему. Что я могу понять из кода, который вы опубликовали, так это то, что вы присваиваете функцию TimerFcn объекту в Data.Audio. Таким образом, если функция TimerFcn не достигнута, это потому, что объект, отвечающий за эту функцию, не может ее запустить, например, если это таймер, который должен ждать X секунд перед запуском этой функции, возможно, он установлен неправильно (или может быть, время ожидания слишком велико).

Я надеюсь, что помогу вам понять проблему.

...