How to load data from csv-files with "dot"-structured variable names and convert to struct/table?
2 次查看(过去 30 天)
显示 更早的评论
Importing data is not the biggest problem, however autogenterate variable names from the headers from the csv-file has been a nightmare.
For example, in a csv-file i can have the table like this(note i can't change the structure of the data sorce)
in.sensors.temp.x in.sensors.temp.y
2 3
1 4
Now what i want to do, is to load in the data and create a struct with the same structure as readings header and assign the data to it.
% what i have done so far:
I import the data by using the functionen "importdata". I have tried csvread, xlsread and readtable , but they have either not worked or created corupt data.
After that I get a struct containg data and datatext. The data text is type char characters.
How do I take create a struct by reading a cell containing charcaraters with dots?
I have tried something like this:
in = createStruct(var_name(5), data(:,5))
function temp = createStruct(fullString, data)
fullString = cell2mat(fullString);
dotFind = strfind(fullString,'.');
temp = data;
while ~isempty(dotFind)
%temp = temp.(convertCharsToStrings(fullString(1:dotFind(1)-1)));
struct(fullString(1:dotFind(1)-1),0);
%fullString = fullString(dotFind(1)+1:end);
%dotFind = strfind(fullString,'.');
end
end
but did not perform very well
1 个评论
采纳的回答
Stephen23
2020-12-11
编辑:Stephen23
2020-12-11
str = 'in.sensors.temp.x';
val = pi;
tmp = regexp(str,'\.','split'); % or SPLIT
S = struct();
S = setfield(S,tmp{:},val)
Checking:
S.in.sensors.temp.x
Loop as required. Read more:
3 个评论
Sean de Wolski
2020-12-11
Awesome! I did not know about setfield. I looked at the see also for rmfield and searched addfield and did not come across setfield... :(
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!