How to load a structure as a handle?

10 ビュー (過去 30 日間)
Ibro Tutic
Ibro Tutic 2017 年 6 月 1 日
回答済み: E Wilder 2018 年 12 月 9 日
I am trying to load a structure to a handle that I can use in a GUI. When I load the structure, I use
handles.data=load('structure.mat')
However, when I want to pull data from it, I have to use a nested structure of sorts. So if the original structure was DLG, when using the data within the GUI, I have to use handles.data.DLG.fieldname. Is there anyway to just use the DLG structure instead of all of the handles stuff? Below is a function that might be relevant to the question.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
handles.data = load(fullfile(handles.folder, handles.item));
tmp_nam = fieldnames(handles.data.DLG.metadata);
tmp_val = cellfun(@(x)(handles.data.DLG.metadata.(x)),tmp_nam,'UniformOutput',false);
handles.table = [tmp_nam tmp_val];
set(handles.uitable2,'data',handles.table);
guidata(gcbo, handles);
  1 件のコメント
Jan
Jan 2017 年 6 月 1 日
編集済み: Jan 2017 年 6 月 1 日
No, this does not "load data to a handle". The struct is called "handles", but it could have any other name also. A "handle" is something very specific. You load the contents of the file to a field of the struct "handles".
I do not know what "a nested structure of sorts" is. "all of the handles stuff" is not clear also.

サインインしてコメントする。

採用された回答

Jan
Jan 2017 年 6 月 1 日
編集済み: Jan 2017 年 6 月 1 日
FileData = load('structure.mat');
handles.Dlg = FileData.Dlg;
I'm not sure, but perhaps tmp_val can be obtained easier:
tmp_val = struct2cell(FileData.Dlg);

その他の回答 (1 件)

E Wilder
E Wilder 2018 年 12 月 9 日
Daniel Shrub provides a good answer to this here:
https://www.mathworks.com/matlabcentral/answers/46884-is-there-something-like-a-struct-pointer-in-matlab

カテゴリ

Help Center および File ExchangeCreating, Deleting, and Querying Graphics Objects についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by