首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将单元格转换为标准矩阵

将单元格转换为标准矩阵
EN

Stack Overflow用户
提问于 2016-07-25 03:05:13
回答 1查看 72关注 0票数 0

如何将单元数组转换为标准矩阵?

例如:

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)

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-07-25 03:33:05

生成测试数据:

代码语言:javascript
复制
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   

手动方法(当您知道大小时):

代码语言:javascript
复制
B( 1:11, 1:2, 1 ) = A{1}
B( 1:22, 1:2, 2 ) = A{2}
B( 1:33, 1:2, 3 ) = A{3}

循环方法:

代码语言:javascript
复制
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 

如您所见,矩阵的最大第一维将定义三维矩阵的第一维的大小,即:

代码语言:javascript
复制
>> B(:, :, 2)
=
 2     2
 2     2
 2     2
 2     2
 2     2
 2     2
 ...
 2     2
 2     2
 0     0
 ...
 0     0

编辑:然后您还可以预先分配B:

代码语言:javascript
复制
B = zeros( max( cellfun('size', A, 1) ), max( cellfun('size', A, 2) ), numel( A ) )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38555718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档