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

12 vues (au cours des 30 derniers jours)
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 commentaire
manoj hanu
manoj hanu le 11 Août 2019
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"

Connectez-vous pour commenter.

Réponse acceptée

Bruno Luong
Bruno Luong le 11 Août 2019
Modifié(e) : Bruno Luong le 11 Août 2019
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 commentaire
manoj hanu
manoj hanu le 15 Août 2019
Thank you for the answer. With your code I used
cell2table(ssplit, 'VariableNames' , { 'AC1' 'AC2' 'AC3' 'AC4'});
to get the columns named.

Connectez-vous pour commenter.

Plus de réponses (1)

madhan ravi
madhan ravi le 11 Août 2019
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]

Catégories

En savoir plus sur Cell Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by