Extract value from every struct
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Monalisa Chikezie
el 2 de Ag. de 2022
Comentada: Monalisa Chikezie
el 9 de Ag. de 2022
I have four 1x1 struct files like the attached. mat file in every 60 subfolder, I want to extract the u field in each struct and assign its name to it. The name is in a field called name e.g, the name of this one is rdf. Then use it as one of the X e.g (model = fitcsvm(X,Y, 'KernelFunction','linear', 'BoxConstraint',1);) for svm classification. where, X= [X1 X2 X3 X4] and X1 is currently rdf. Using a for loop, please how do I extract something from a struct.
0 comentarios
Respuesta aceptada
Walter Roberson
el 4 de Ag. de 2022
Editada: Walter Roberson
el 6 de Ag. de 2022
vois={'ldF', 'rdF', 'lvF', 'rvF'};
numvois = length(vois);
basedir = 'place/where/the/folders/are';
foldinfo = dir(basename);
foldinfo(~[foldinfo.isdir]) = []; %remove non-folders
foldinfo(ismember({foldinfo.name}, {'.', '..'})) = []; %remove . and ..
foldernames = fullfile({foldinfo.folder}, {foldinfo.name});
numfolders = length(foldernames);
X_all = cell(numfolders, numvois);
for K = 1 : numfolders
thisfolder = foldernames{K};
[~, basename, ~] = fileparts(thisfolder);
for vidx = 1 : numvois
filename = fullfile(thisfolder, basename + "_" + vidx + ".mat");
Features = load(filename);
X_i = Features.xY.u;
X_all{thisfolder, vidx} = X_i;
end
end
At the end of this, X_all will be a cell array with as many rows as folders (60, you said), and as many columns as vois (4)
5 comentarios
Más respuestas (2)
Karim
el 2 de Ag. de 2022
Editada: Karim
el 2 de Ag. de 2022
You can acces the data in the struct by placing a point after the variable name of the struct, follewed by the fieldname you want to acces. See below for an example for the 'u' variable.
Features = load(websave('myFile', "https://nl.mathworks.com/matlabcentral/answers/uploaded_files/1085720/VOI_rdF_1.mat"));
% first extract xY from 'Features'
xY = Features.xY;
% then extract u from the struct
u = xY.u;
% plot the data
figure
plot(u)
grid on
0 comentarios
Ver también
Categorías
Más información sobre Data Import and Analysis en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!