Need to Split a column of type 'string' in a Table in to group of 4 characters giving new names to the result.

12 次查看(过去 30 天)
I have read a csv file in to a table in below format of large number of rows. The Data field is of type string.
Time Identifier Data
00:06:40.23 "300" "65 00 69 00 6D 00 75 00 "
00:06:40.25 "100" "B7 FF E5 FF 7D 10 01 00 "
I need to split the Data column in to 4 columns with new names. i.e. as below
Time Identifier AC1 AC2 AC3 AC4
00:06:40.23 "300" "6500" "6900" "6D00" "7500"
00:06:40.25 "100" "B7FF" "E5FF" "7D10" "0100"
  1 个评论
manoj hanu
manoj hanu 2019-8-11
I tried first removing all the spaces with strrep.
A = strrep(table.Data, ' ', '');
Now got a string array in A without the spaces. Is there a better way in which this can be divided in to 4 columns now??
A = 2x1 string array
"650069006D007500"
"B7FFE5FF7D100100"

请先登录,再进行评论。

采纳的回答

Bruno Luong
Bruno Luong 2019-8-11
编辑:Bruno Luong 2019-8-11
s=[ "65 00 69 00 6D 00 75 00 ";
"B7 FF E5 FF 7D 10 01 00 "]
c = char(s);
c(:,3:3:end)=[];
ssplit = string(mat2cell(c,ones(1,size(c,1)),4*ones(1,4)))
Result
ssplit =
2×4 string array
"6500" "6900" "6D00" "7500"
"B7FF" "E5FF" "7D10" "0100"

更多回答(1 个)

madhan ravi
madhan ravi 2019-8-11
v=regexp(strrep(T.Data,' ',''),'\w{4}','match');% naming a table with a variable name table is a terrible idea (will hinder the in-built function table())use T for example
AC = vertcat(v{:});
AC = array2table(AC);
T.Data = [];
T = [T,AC]

类别

Help CenterFile Exchange 中查找有关 Cell Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by