Начиная с пустого графического интерфейса и просто добавляя к нему кнопку (помеченную как 'btnTest'), следующий код работает нормально:
%% --- Executes on button press in btnTest.
function btnTest_Callback(hObject, eventdata, handles)
%[
changeName(handles);
%]
%% --- Inner function
function [] = changeName(handles)
%[
set(handles.btnTest, 'String', 'toto');
%]
Так что, возможно, в вашем коде что-то не так.
Если вы не хотите передавать структуру «дескрипторов» в функцию «changeName» (т. Е. Иметь дескрипторы глобально), вы можете сделать это следующим образом:
%% --- Executes on button press in btnTest.
function btnTest_Callback(hObject, eventdata, handles)
%[
changeName();
%]
%% --- Inner function
function [] = changeName()
%[
handles = guihandles(); % recover handles for current figure
set(handles.btnTest, 'String', 'toto');
%]
Но это намного медленнее, чем прохождение «ручек» напрямую.