Convert 3-D matrix to a table

18 vues (au cours des 30 derniers jours)
Konstantinos Tsitsilonis
Konstantinos Tsitsilonis le 11 Sep 2017
Hi all,
I have an output from a for loop which is a 3-D matrix. I would like to place the contents of that 3-D matrix in a table such that if my 3-D matrix is
Mat = rand(5, 10, 4) ;
My table can look like this:
Var1 = reshape(Mat(:,1,:), [], 2) ; %Table Variables extracted and converted to 2-D matrices
Var2 = reshape(Mat(:,2,:), [], 2) ;
etc....
T = table(Var1, Var2 ... etc)
This way, under each variable there are going to be four columns.
Is there an 'automated' way to perform the above, as depending on the problem I am going to be dealing with anywhere from 2-4 'layers' on the 3rd dimension of the matrix Mat ?
Thanks for your responses in advance,
KMT.

Réponse acceptée

Guillaume
Guillaume le 11 Sep 2017
If you want 4 columns, then your reshape is wrong. You probably meant:
Var1 = reshape(Mat(:, 1, :), [], 4);
%...
If I understood correctly you want a table with 5 rows, 10 variables, where each variable has 4 columns. reshape is the wrong tool for that. permute is the right tool.
mat = randi([0 20], 5, 10, 4);
splitmat = num2cell(permute(mat, [1 3 2]), [1 2]); %move 3rd dimension as column, then split into cell array keeping rows and columns together
T = table(splitmat{:})
  1 commentaire
Konstantinos Tsitsilonis
Konstantinos Tsitsilonis le 11 Sep 2017
thanks for your help!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Numeric Types 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