converting a cell array of doubles in a matrix

201 vues (au cours des 30 derniers jours)
Haneya Qureshi
Haneya Qureshi le 19 Juin 2018
Commenté : OCDER le 19 Juin 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?

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (1)

OCDER
OCDER le 19 Juin 2018
A = {rand(1,10000), rand(1,10000)};
B = vertcat(A{:});
  1 commentaire
OCDER
OCDER le 19 Juin 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);

Connectez-vous pour commenter.

Catégories

En savoir plus sur Cell Arrays 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