如何将单元数组转换为标准矩阵?
例如:
A{1}包含11行*2列矩阵
A{2} a x行*2列(它始终是两列矩阵)
..。
A{n} a x行*2列矩阵。
每次单元格的索引n发生变化时,行数x都会发生变化。
换句话说,每个单元格内容始终为2列宽,但包含不同数量的行。
我想将它们存储在一个标准数组B(x,1:2,n)中,该数组有2列,x根据n的变化而变化。
例如,如果A{1}为11x2,则这些值存储在B中,如下所示:B(1:11,1:2,1)。
如果A{n}为x*2,则B会将这些值存储为B(1:x,1:2,n)。
谢谢。
发布于 2016-07-25 03:33:05
生成测试数据:
A{1} = ones( 11, 2 )
A{2} = 2 * ones( 22, 2 )
A{3} = 3 * ones( 33, 2 )
A =
[11x2 double] [22x2 double] [33x2 double]
>> whos A
Name Size Bytes Class Attributes
A 1x3 1392 cell 手动方法(当您知道大小时):
B( 1:11, 1:2, 1 ) = A{1}
B( 1:22, 1:2, 2 ) = A{2}
B( 1:33, 1:2, 3 ) = A{3}循环方法:
for k = 1:numel( A )
B( 1:size( A{k},1 ), 1:2, k ) = A{k};
end
>> whos B
Name Size Bytes Class Attributes
B 33x2x3 1584 double 如您所见,矩阵的最大第一维将定义三维矩阵的第一维的大小,即:
>> B(:, :, 2)
=
2 2
2 2
2 2
2 2
2 2
2 2
...
2 2
2 2
0 0
...
0 0编辑:然后您还可以预先分配B:
B = zeros( max( cellfun('size', A, 1) ), max( cellfun('size', A, 2) ), numel( A ) )https://stackoverflow.com/questions/38555718
复制相似问题