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?

Risposte (3)

KSSV
KSSV il 10 Ott 2017
Modificato: KSSV il 10 Ott 2017
test = cell(1,4) ;
for i = 1:4
test{i} = rand(40,1) ;
end
iwant = cell2mat(test) ;
iwant = {iwant(:)} ;

2 Commenti

Is there no quicker way than looping?
The loop is only to build the demo data.

Accedi per commentare.

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

2 Commenti

That is giving me a 40x4 matrix...?!
Guillaume
Guillaume il 10 Ott 2017
Modificato: Guillaume il 10 Ott 2017
Oh yes, your vectors are column vectors. Concatenate them vertically then:
test = vertcat(test{:})

Accedi per commentare.

KL
KL il 10 Ott 2017
Modificato: KL il 10 Ott 2017
test = cell2mat(test');
this?

Categorie

Richiesto:

il 10 Ott 2017

Modificato:

il 10 Ott 2017

Community Treasure Hunt

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

Start Hunting!

Translated by