Table column of strings to a matrix.
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Daniel
el 14 de Nov. de 2022
Respondida: Steven Lord
el 14 de Nov. de 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]"]
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]
How can i do this without using loops? Thank you in advance.
2 comentarios
Stephen23
el 14 de Nov. de 2022
Editada: Stephen23
el 14 de Nov. de 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
el 14 de Nov. de 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".
Respuesta aceptada
Stephen23
el 14 de Nov. de 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]"]
M = cell2mat(cellfun(@str2num,A,'uni',0))
0 comentarios
Más respuestas (3)
RAGHUNATHRAJU DASHARATHA
el 14 de Nov. de 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]"]
B =extract(A,digitsPattern)
B=str2double(B)
for more information go through the link
Steven Lord
el 14 de Nov. de 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]"]
A2 = erase(A, ["[", "]"])
double(split(A2, ' '))
0 comentarios
Jan
el 14 de Nov. de 2022
Editada: Jan
el 14 de Nov. de 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'
Alternative:
AC = char(extract(A, digitsPattern));
B = squeeze(AC) - '0'
0 comentarios
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!