converting a cell array of doubles in a matrix

123 次查看(过去 30 天)
I have a variable A which looks like this:
1×2 cell array
{1×9 double} {1×9 double}
I want to convert it to a matrix, i.e, the first row of matrix should be what's inside the A{1} and second row of matrix should be what's inside A{2}. A is a cell, but A{1} and A{2} are doubles. How can i do this?

采纳的回答

Ameer Hamza
Ameer Hamza 2018-6-19
A{1} = rand(1,9);
A{2} = rand(1,9);
cell2mat(A')
A =
1×2 cell array
{1×9 double} {1×9 double}
ans =
Columns 1 through 7
0.0844 0.3998 0.2599 0.8001 0.4314 0.9106 0.1818
0.1361 0.8693 0.5797 0.5499 0.1450 0.8530 0.6221
Columns 8 through 9
0.2638 0.1455
0.3510 0.5132

更多回答(1 个)

OCDER
OCDER 2018-6-19
A = {rand(1,10000), rand(1,10000)};
B = vertcat(A{:});
  1 个评论
OCDER
OCDER 2018-6-19
cell2mat is certainly the right function for converting cell arrays to matrices while preserving the MxN dimension of the cell array. However, vertcat is a built-in function (meaning super optimized) and will run ~2x faster for your case.
A = {rand(1,10000), rand(1,10000)};
t1 = timeit(@() vertcat(A{:}), 1);
t2 = timeit(@() cell2mat(A), 1);
fprintf('cell2mat(A'') time is %0.2f times slower than vertcat(A{:})\n', t2/t1);

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Cell Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by