Filter löschen
Filter löschen

Table column of strings to a matrix.

4 Ansichten (letzte 30 Tage)
Daniel
Daniel am 14 Nov. 2022
Beantwortet: Steven Lord am 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 Kommentare
Stephen23
Stephen23 am 14 Nov. 2022
Bearbeitet: Stephen23 am 14 Nov. 2022
"I have a table column that contains strings with vectors inside "
This looks like file importing is suboptimal. You can probably change the file importing to import numeric as numeric, which most likely would be simpler and more efficient than messing around with text like this.
Jan
Jan am 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".

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Stephen23
Stephen23 am 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

Weitere Antworten (3)

RAGHUNATHRAJU DASHARATHA
RAGHUNATHRAJU DASHARATHA am 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
for more information go through the link

Steven Lord
Steven Lord am 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
Jan am 14 Nov. 2022
Bearbeitet: Jan am 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

Kategorien

Mehr zu Characters and Strings 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!

Translated by