Filter löschen
Filter löschen

converting a cell array of doubles in a matrix

123 Ansichten (letzte 30 Tage)
Haneya Qureshi
Haneya Qureshi am 19 Jun. 2018
Kommentiert: OCDER am 19 Jun. 2018
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?

Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 19 Jun. 2018
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 Kommentare
Haneya Qureshi
Haneya Qureshi am 19 Jun. 2018
Thank you so much! This works perfectly!
Ameer Hamza
Ameer Hamza am 19 Jun. 2018
You are welcome.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

OCDER
OCDER am 19 Jun. 2018
A = {rand(1,10000), rand(1,10000)};
B = vertcat(A{:});
  1 Kommentar
OCDER
OCDER am 19 Jun. 2018
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);

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Cell Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by