How i create a structure from an excell that i import into matlab ?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentar
Walter Roberson
am 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);
Antworten (1)
Soumya Paliwal
am 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 Kommentare
Siehe auch
Kategorien
Mehr zu Spreadsheets finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!