Is it possible to insert multidimensional arrays within table entries?

15 views (last 30 days)
For example: I want to create a table with 5 rows and 2 columns. The first column is just 5 rows of doubles. Can I insert a 3x3x2 array into every row of the second column?
  1 Comment
Dyuman Joshi
Dyuman Joshi on 14 Apr 2023
Edited: Dyuman Joshi on 14 Apr 2023
It is possible, but technically it's a 1x1 cell array which contains the 3x3x2 double array -
data1 = rand(5, 1);
data2 = repmat({rand(3,3,2)}, 5, 1);
y=table(data1, data2)
y = 5×2 table
data1 data2 ________ ______________ 0.67046 {3×3×2 double} 0.30826 {3×3×2 double} 0.65208 {3×3×2 double} 0.8973 {3×3×2 double} 0.046877 {3×3×2 double}

Sign in to comment.

Accepted Answer

the cyclist
the cyclist on 14 Apr 2023
I don't think an element of table can be a mutli-dimensional array, but it can be a cell that holds a multidimensional array:
% Create a cell array that will be converted to a table
c = {1,rand(3,3,2);
2,rand(3,3,2);
3,rand(3,3,2);
4,rand(3,3,2);
5,rand(3,3,2)
};
% Convert to table
t = cell2table(c)
t = 5×2 table
c1 c2 __ ______________ 1 {3×3×2 double} 2 {3×3×2 double} 3 {3×3×2 double} 4 {3×3×2 double} 5 {3×3×2 double}
% Contents of t(1,2) is a cell array
t{1,2}
ans = 1×1 cell array
{3×3×2 double}
% Contents of that cell is the 3,3,2 array
t{1,2}{:}
ans =
ans(:,:,1) = 0.0665 0.1908 0.2427 0.5777 0.5714 0.0996 0.8492 0.3431 0.9827 ans(:,:,2) = 0.2977 0.2038 0.3317 0.9687 0.0533 0.0859 0.9267 0.6033 0.2975
I'm therefore not sure if a table would be the most appropriate way to store these data, as opposed to a cell array directly.
(But, I could be wrong about a more direct way to store the array.)

More Answers (0)

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!