根据数据矩阵和其他索引矩阵matlab形成一个新的矩阵

时间:2015-02-25 15:49:13

标签: matlab

给定矩阵3的大小为3乘3包含索引,而大小为2乘12的其他矩阵R包含数字块,每个块大小为2乘2。 整个过程的周期是根据矩阵A内的索引顺序形成包含R矩阵内的块的新矩阵。 这是一个例子

矩阵A:

A=[1 2 3;

   1 3 4;

   4 5 6]

矩阵R:

R=[1 1 2 2  3 3 4 4 5 5 6 6;

   1 1 2 2  3 3 4 4 5 5 6 6 ]

新矩阵是:

New=[1 1 2 2 3 3; 

     1 1 2 2 3 3;

     1 1 3 3 4 4;

     1 1 3 3 4 4;

     4 4 5 5 6 6;

    4 4 5 5 6 6 ]

任何想法?

1 个答案:

答案 0 :(得分:1)

我假设您的矩阵R定义如下:

R = [1 1 2 2 3 3 4 4 5 5 6 6 ;
     1 1 2 2 3 3 4 4 5 5 6 6 ]

使用索引矩阵A

A = [ 1 2 3;
      1 3 4;
      4 5 6 ]

您需要mat2cellcell2mat才能获得所需的输出

%// clustersize in R
c = [2 2]

%// clustered R
Rx = mat2cell(R,c(1),repmat(c(2),size(R,2)/c(2),1));
%// or more direct
%// Rx = mat2cell(R,2,[2 2 2 2 2 2]);    

%// indexing of Rx with A and decollapsing of cell
out = cell2mat( Rx(A) )

out =

 1     1     2     2     3     3
 1     1     2     2     3     3
 1     1     3     3     4     4
 1     1     3     3     4     4
 4     4     5     5     6     6
 4     4     5     5     6     6