# Table column of strings to a matrix.

4 views (last 30 days)
Daniel on 14 Nov 2022
Answered: Steven Lord on 14 Nov 2022
Hello,
i am beginer and i am struggling with matlab tables. I have a table column that contains strings with vectors inside
A=["[0 0 0 0 0 0 0 0]";"[0 0 0 0 0 0 0 0]";"[0 0 0 0 0 0 0 0]";"[1 1 1 1 1 1 1 1]"]
A = 4×1 string array
"[0 0 0 0 0 0 0 0]" "[0 0 0 0 0 0 0 0]" "[0 0 0 0 0 0 0 0]" "[1 1 1 1 1 1 1 1]"
I would like to have a matrix with the numbers inside, like
B=[0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0;1 1 1 1 1 1 1 1]
B = 4×8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
How can i do this without using loops? Thank you in advance.
##### 2 CommentsShowHide 1 older comment
Jan on 14 Nov 2022
"I have a table column that contains strings with vectors inside" - no, there is no table. This is a column vector of strings. If the strings are interpreted as Matlab, they would be vectors, but they are not "inside".

Stephen23 on 14 Nov 2022
A = ["[0 0 0 0 0 0 0 0]";"[0 0 0 0 0 0 0 0]";"[0 0 0 0 0 0 0 0]";"[1 1 1 1 1 1 1 1]"]
A = 4×1 string array
"[0 0 0 0 0 0 0 0]" "[0 0 0 0 0 0 0 0]" "[0 0 0 0 0 0 0 0]" "[1 1 1 1 1 1 1 1]"
M = cell2mat(cellfun(@str2num,A,'uni',0))
M = 4×8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

RAGHUNATHRAJU DASHARATHA on 14 Nov 2022
As per my understanding you want to get a matrix from the string array
I will demonstarte it using the example below
A=["[0 0 0 0 0 0 0 0]";"[0 0 0 0 0 0 0 0]";"[0 0 0 0 0 0 0 0]";"[1 1 1 1 1 1 1 1]"]
A = 4×1 string array
"[0 0 0 0 0 0 0 0]" "[0 0 0 0 0 0 0 0]" "[0 0 0 0 0 0 0 0]" "[1 1 1 1 1 1 1 1]"
B =extract(A,digitsPattern)
B = 4×8 string array
"0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "1" "1" "1" "1" "1" "1" "1" "1"
B=str2double(B)
B = 4×8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Stephen23 on 14 Nov 2022
+1 very neat.

Steven Lord on 14 Nov 2022
A=["[0 0 0 0 0 0 0 0]";"[0 0 0 0 0 0 0 0]";"[0 0 0 0 0 0 0 0]";"[1 1 1 1 1 1 1 1]"]
A = 4×1 string array
"[0 0 0 0 0 0 0 0]" "[0 0 0 0 0 0 0 0]" "[0 0 0 0 0 0 0 0]" "[1 1 1 1 1 1 1 1]"
A2 = erase(A, ["[", "]"])
A2 = 4×1 string array
"0 0 0 0 0 0 0 0" "0 0 0 0 0 0 0 0" "0 0 0 0 0 0 0 0" "1 1 1 1 1 1 1 1"
double(split(A2, ' '))
ans = 4×8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

Jan on 14 Nov 2022
Edited: Jan on 14 Nov 2022
A = ["[0 0 0 0 0 0 0 0]";"[0 0 0 0 0 0 0 0]";"[0 0 0 0 0 0 0 0]";"[1 1 1 1 1 1 1 1]"];
AC = char(A);
AC(ismember(AC, '[] ')) = [];
AC = reshape(AC, numel(A), []);
B = AC - '0'
B = 4×8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Alternative:
AC = char(extract(A, digitsPattern));
B = squeeze(AC) - '0'
B = 4×8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1