how to convert table to matrix?

 Respuesta aceptada

Walter Roberson
Walter Roberson el 30 de Mzo. de 2026
Editada: MathWorks Support Team el 13 de Nov. de 2024

19 votos

table2array() . Or, if the table is all numeric, you can give the table name and then {:, :} such as mytable{:,:}

2 comentarios

satya deep
satya deep el 7 de Feb. de 2018
I want the table to matrix sir.
Walter Roberson
Walter Roberson el 7 de Feb. de 2018
Editada: Walter Roberson el 7 de Feb. de 2018
The code I posted does that. Table objects are always 2 dimensional in MATLAB and for two dimensions the terms array and matrix are the same thing.

Iniciar sesión para comentar.

Más respuestas (4)

FAS
FAS el 20 de Nov. de 2018

17 votos

Suppose your table is X.
X = X{:,:}

3 comentarios

JoshT_student
JoshT_student el 2 de Dic. de 2022
Best answer.
Walter Roberson
Walter Roberson el 2 de Dic. de 2022
Same as the second solution that I had posted 8 months earlier...
Jacob Conrad
Jacob Conrad el 15 de Mzo. de 2023
dont be a jerk walter

Iniciar sesión para comentar.

MathWorks Support Team
MathWorks Support Team el 2 de Sept. de 2020
Editada: MathWorks Support Team el 2 de Sept. de 2020

1 voto

To convert a table to a matrix, use the table2array function. (A matrix is a 2-D array.)
As an alternative, you can convert a table to an array by using the syntax “T{:,:}”, where “T” is the table. This syntax is the equivalent of “table2array”.
All variables in the table must have sizes and data types that allow them to be horizontally concatenated. For example, if all variables in “T” are numeric, then “table2array” returns a numeric array.

2 comentarios

Arsalan Aftab Sayed
Arsalan Aftab Sayed el 16 de Dic. de 2020
I tried both table2array and “T{:,:}” but it changes the values inside the table from 0.7 to 1. Is there a way I can keep the original values, I tried using double datatype but it doesn't work
table2array() converting 0.7 to 1 could happen if the table is mixed data type including at least one integer data type such as uint8 . Please check
unique( varfun(@class, T, 'outputformat', 'cell') )

Iniciar sesión para comentar.

Another alternative to convert table to matrix is to use a syntax: M=T.Var, e.g.
T = table(magic(5))
T = 5×1 table
Var1 __________________________ 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
M=T.Var1
M = 5×5
17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

6 comentarios

Walter Roberson
Walter Roberson el 4 de Ag. de 2021
This depends upon there being only a single variable in the table. That is possible, but not the most common arrangement.
Yes, it works for multiple variables as well, but it becomes painstakingly heavy for such cases, e.g.:
T = array2table(magic(5), 'VariableNames', {'Var1','Var2','Var3','Var4','Var5'})
T = 5×5 table
Var1 Var2 Var3 Var4 Var5 ____ ____ ____ ____ ____ 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
M = [T.Var1, T.Var2, T.Var3, T.Var4, T.Var5]
M = 5×5
17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
Walter Roberson
Walter Roberson el 4 de Ag. de 2021
At that point, table2array() or using {:,:} indexing becomes a lot more convenient.
Sulaymon Eshkabilov
Sulaymon Eshkabilov el 4 de Ag. de 2021
Yes, indeed.
What can I do if I have N var, with random names, inside a table that imports from excel, this table can vary.
that is, the method of putting T. "name var" is not possible if I have N quantity of varials with N different names
You can use variable indexes if the indexes are constant.
If the variable order is not constant, then you can take T.Properties.VariableNames and extract whatever subset of those you want and sort them in whatever you want. Then you can loop doing dynamic field names.
Example, selecting variables that start with "run"
names = T.Properties.VariableNames;
runvars = sort(names(startsWith(names, 'run')));
nrun = length(runvars);
for varidx = 1 : nrun
thisvarname = runvars{varidx};
thiscontent = T.(thisvarname);
stuff here
end

Iniciar sesión para comentar.

Categorías

Más información sobre Data Type Conversion en Centro de ayuda y File Exchange.

Productos

Etiquetas

Preguntada:

el 5 de Feb. de 2018

Editada:

el 13 de Nov. de 2024

Community Treasure Hunt

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

Start Hunting!

Translated by