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?

回答(3 个)

KSSV
KSSV 2017-10-10
编辑:KSSV 2017-10-10
test = cell(1,4) ;
for i = 1:4
test{i} = rand(40,1) ;
end
iwant = cell2mat(test) ;
iwant = {iwant(:)} ;

2 个评论

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

请先登录,再进行评论。

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

2 个评论

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

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

标签

提问:

2017-10-10

编辑:

2017-10-10

Community Treasure Hunt

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

Start Hunting!

Translated by