How i create a structure from an excell that i import into matlab ?
9 views (last 30 days)
Show older comments
I have an excell table with dimencions (9x8). The table has text, number and time data. I want to import the table in matlab and then create a structure with 8 fields. Each field will have the values of each row, so the dimencions would be 9x1.
I tried to import the excell table as 8 column vectors. Then i tried create a stuctrure with 8 fields where each field would correspond to each vector. The following code describes what i have done already.
% initialize an empty list of incomplete paths H
% then fulfill each field with the right column of the excell table
(line8) H = struct ( field1, value1, field2, value2, field3, value3, field4, value4, field5, value5, field6, value6, field7, value7, field8, value8);
H.value1 = 'ORIGIN';
H.value2 = 'DESTINATION';
H.value3 = 'EARLIESTPICKUPTIME';
H.value4 = 'LATESTDELIVERY';
H.value5 = 'TRANSPORTATION';
H.value6 = 'MODEOFTRANSPORT';
H.value7 = 'HRS';
H.value8 = 'KM';
My matlab file name is ''secondmatlab'' and the error message that appears when i try to run the code is the following:
secondmatlab
Undefined function or variable 'field1'.
Error in secondmatlab (line 8)
H = struct ( field1, value1, field2, value2, field3, value3, field4, value4, field5, value5, field6, value6, field7, value7, field8, value8);
1 Comment
Walter Roberson
on 9 Apr 2021
H = struct ( field1, value1, field2, value2, field3, value3, field4, value4, field5, value5, field6, value6, field7, value7, field8, value8);
For that to work, field1 would need to be a variable that held a character vector or string scalar that is a field name. Perhaps you want
H = struct ( 'field1', value1, 'field2', value2, 'field3', value3, 'field4', value4, 'field5', value5, 'field6', value6, 'field7', value7, 'field8', value8);
Answers (1)
Soumya Paliwal
on 9 Apr 2021
When creating a struct like this:
s = struct(field1,value1)
the correct way to interpret it is like this:
s.field1 = value1
To add more fields, you should do the following:
s.field2 = value2
This will create a struct s with 2 fields, 'field1' and field2' with the values 'value1' and 'value2' respectively.
For your example, you can try doing the following:
% Read the excel file and store the data in a table
rawData = readtable('<excel_file_name>.xlsx');
% Do this for all the columns of the excel file
for i=1:width(rawData)
% myStruct.field<i> = rawData.<variableName>
myStruct.(['field' num2str(i)]) = rawData.(rawData.Properties.VariableNames{i});
end
0 Comments
See Also
Categories
Find more on Spreadsheets in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!