Вы можете использовать функцию Matlab evalin
для извлечения переменной рабочей области из вашего графического интерфейса.
Следующий пример GUI демонстрирует это, вы, вероятно, можете расширить с этой начальной точки:
% GUI
function so_wsgui
figure('units','normalized',...
'position',[0.15 0.15 0.7 0.7],...
'color',[1 1 1]*0.5,...
'numbertitle','off',...
'menubar','none',...
'toolbar','none',...
'tag','figure');
data=guihandles(gcf);
uicontrol('parent',data.figure,...
'style','pushbutton',...
'string','Import',...
'units','normalized',...
'position',[0.1 0.85 0.8 0.05],...
'callback',@import_callback);
uicontrol('parent',data.figure,...
'style','edit',...
'horizontalalignment','center',...
'backgroundcolor',[1 1 1],...
'units','normalized',...
'position',[0.1 0.5 0.8 0.05],...
'tag','text');
data=guihandles(gcf);
guidata(gcf,data);
end
% Callbacks
function import_callback(obj,event) %#ok
data=guidata(gcbf);
try
wsvar=evalin('base','textdata');
set(data.text,'string',wsvar{1});
catch exception
set(data.text,'string',['Error: ' exception.identifier]);
end
end
Однако вы должны быть осторожны с этим, потому что ничто не гарантирует вам, что переменная существует или что это массив ячеек, поэтому вы должны быть осторожны. Это не совсем обычный способ передачи данных в графический интерфейс.