converting a cell array of doubles in a matrix

132 ビュー (過去 30 日間)
Haneya Qureshi
Haneya Qureshi 2018 年 6 月 19 日
コメント済み: OCDER 2018 年 6 月 19 日
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
  2 件のコメント
Haneya Qureshi
Haneya Qureshi 2018 年 6 月 19 日
Thank you so much! This works perfectly!
Ameer Hamza
Ameer Hamza 2018 年 6 月 19 日
You are welcome.

サインインしてコメントする。

その他の回答 (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 Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by