reshaping cell containing double arrays

Hi,
I have (as an example) the following cell array:
test =
1×4 cell array
[40×1 double] [40×1 double] [40×1 double] [40×1 double]
I want test to be a 1 x 1 cell, containing the double arrays (from left to right) as one double array of dimension 160 x 1. reshape(test,[160,1]) does not work directly here. What can I do?

Réponses (3)

KSSV
KSSV le 10 Oct 2017
Modifié(e) : KSSV le 10 Oct 2017
test = cell(1,4) ;
for i = 1:4
test{i} = rand(40,1) ;
end
iwant = cell2mat(test) ;
iwant = {iwant(:)} ;

2 commentaires

MiauMiau
MiauMiau le 10 Oct 2017
Is there no quicker way than looping?
Guillaume
Guillaume le 10 Oct 2017
The loop is only to build the demo data.

Connectez-vous pour commenter.

Guillaume
Guillaume le 10 Oct 2017
That's because what you want is not reshaping but a concatenation. (The matrices may not be contiguous in memory):
test = [test{:}]

2 commentaires

MiauMiau
MiauMiau le 10 Oct 2017
That is giving me a 40x4 matrix...?!
Guillaume
Guillaume le 10 Oct 2017
Modifié(e) : Guillaume le 10 Oct 2017
Oh yes, your vectors are column vectors. Concatenate them vertically then:
test = vertcat(test{:})

Connectez-vous pour commenter.

KL
KL le 10 Oct 2017
Modifié(e) : KL le 10 Oct 2017
test = cell2mat(test');
this?

Catégories

Question posée :

le 10 Oct 2017

Modifié(e) :

le 10 Oct 2017

Community Treasure Hunt

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

Start Hunting!

Translated by