Допустим, у вас есть графический объект с дескриптором hObject
, и вы получили обратный вызов для объекта следующим образом:
callbackCell = get(hObject,'Callback');
Как вы упомянули, массив ячеек callbackCell
, который вы получаете, в итоге становится массивом из трех элементов с дескриптором функции в первой ячейке и другими данными в двух других ячейках. Когда обратный вызов для объекта определен как массив ячеек (как в вашем случае), дескриптор функции обратного вызова (или имя строки) сохраняется в первой ячейке и дополнительные входные аргументы, которые вы хотите передать функция обратного вызова находится в остальных ячейках.
Однако, когда этот обратный вызов вызывается, когда объект активирован, фактически в начале списка входных аргументов MATLAB автоматически вставит 2 дополнительных аргумента. Это:
hObject
: дескриптор объекта, обратный вызов которого теперь вызывается.
eventData
: структура данных, связанных с активируемым пользователем событием, которая часто представляет собой просто пустую матрицу []
(за исключением в некоторых случаях ).
Итак, если вы хотите имитировать действие объекта, активируемого пользователем, вам нужно вызвать функцию обратного вызова следующим образом (при условии, что данные события не нужны):
callbackCell{1}(hObject,[],callbackCell{2:end});