【问题标题】:Dividing a matrix in cells in Matlab?在Matlab中划分单元格中的矩阵?
【发布时间】:2015-06-27 03:37:48
【问题描述】:

我有

1) Matlab 中的向量A,维度为mx1,例如m=10

A=[1;2;3;4;5;6;7;8;9;10]

2) 维度为nx1 的向量B,例如n=2

B=[2; 1]

3) 维度为nx1 的向量C,例如

C=[3; 4]

应该是C(i)*B(i)i 之和等于m。在示例中3*2+4*1=10

我想生成一个由sum(B,1) 子单元组成的维度为1xsum(B,1) 的单元C。应该创建子单元格以查看BCB(i)C(i) 告诉我们必须采用B(i)C(i) 的每个A 元素。在示例中,

C={{1 2 3} {4 5 6} {7 8 9 10}}

【问题讨论】:

  • 从您的两个参数 b 和 c,您需要获取每个单元格的大小,例如 D=[3,3,4] 。这是运行长度解码,并在此处回答了多个问题。如果你得到 D,使用 mat2cell 分割 A。

标签: matlab


【解决方案1】:

您可以使用arrayfunrepmat 组合来实现。不过,可能有一种更有效的方法。

A=[1;2;3;4;5;6;7;8;9;10] ;
B=[2; 1] ;
C=[3; 4];
q = arrayfun(@(x, y) repmat(x(:), 1, y), C, B, 'uni', 0);
Ap = mat2cell(A(:), [q{:}]);
Ap{:}

输出

ans =

     1
     2
     3


ans =

     4
     5
     6


ans =

     7
     8
     9
    10

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    相关资源
    最近更新 更多