Extract fields from struct and convert to excel file

Dear community,
I create a struct with numerous fields. I simply want to extract to fields (ISPC_together & GSI together) and export a .csv list.
Any suggestions? Thanks for your support.
Jonas

 Accepted Answer

Try this...
data = struct('ISPC_together', 0.2053, 'GSI_together', 0.0172);
data(2) = struct('ISPC_together', 0.0243, 'GSI_together', 0.0040);
writetable(struct2table(data), 'data.csv')

2 Comments

Dear Eric,
thank you so much for your response. Do you have an idea how to put it in a for loop. Actually I have 2 data sets. In the future it might be more. I tried the code see below and get the message
Error using struct2table (line 33) Input structure must be a scalar structure, or a structure array with one column or one row.
Kind regards, Jonas
sz = [2 2];
varTypes = {'struct', 'struct'};
varNames = {'ISPC_together', 'GSI_together'};
Table_ISPC_vs_GSI = table ('Size', sz, 'VariableNames', varNames, 'VariableTypes', varTypes);
for i = 1:numel (data)
Table_ISPC_vs_GSI(:,1) = {struct2table(data(i).ISPC_together)}
Table_ISPC_vs_GSI(:,2) = {struct2table(data(i).GSI_togehter)}
end
Are you trying to concatenate the data in one just table?! See below comments on your code and something that could help you...
sz = [2 2];
varTypes = {'struct', 'struct'};
% STRUCT as elements of your big table?!
varNames = {'ISPC_together', 'GSI_together'};
Table_ISPC_vs_GSI = table ('Size', sz, 'VariableNames', varNames, 'VariableTypes', varTypes);
for i = 1:numel (data)
% data(i).ISPC_together and data(i).GSI_togehter are DOUBLE, so you can't
% convert it to TABLE using STRUCT2TABLE.
Table_ISPC_vs_GSI(:,1) = {struct2table(data(i).ISPC_together)}
Table_ISPC_vs_GSI(:,2) = {struct2table(data(i).GSI_togehter)}
end
Try this...
dataSet1 = struct('ISPC_together', 0.2053, 'GSI_together', 0.0172);
dataSet1(2) = struct('ISPC_together', 0.0243, 'GSI_together', 0.0040);
dataSet2 = struct('ISPC_together', 0.1010, 'GSI_together', 0.1010);
dataSet2(2) = struct('ISPC_together', 0.2020, 'GSI_together', 0.2020);
[struct2table(dataSet1); struct2table(dataSet2)]
ans = 4×2 table
ISPC_together GSI_together _____________ ____________ 0.2053 0.0172 0.0243 0.004 0.101 0.101 0.202 0.202

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2022a

Community Treasure Hunt

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

Start Hunting!