聚合矩阵和单元阵列

时间:2018-01-31 09:43:44

标签: matlab aggregation

我将3x3矩阵D聚合为2x2(将列/行1和2加在一起)。矩阵D的行和列的名称保持在1×3向量m中。 我正在寻找一种方法来通过删除一个元素来聚合向量M,使其大小为2x1。

给出3x3矩阵D:

D = 
 1 2 3
 4 5 6
 7 8 9  

和2x3聚合矩阵S:

S = 
 1 1 0
 0 0 1

我通过以下方式将D聚合成2x2矩阵:

D = S*D*S' 

D = 
 12 15   
  9  9  

列和行的名称存储在3x1向量m中。

m = 
 'A'   
 'B'
 'C'

我想删除元素2(' B'),因此最终输出如下所示:

m = 
 'A'   
 'C'

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我假设您要查找块对角矩阵的块的左上角并返回其列索引。

例如,对于以下矩阵:

11100      10000
11100      00000   
00010  =>  00010
00010      00000
00001      00001

结果为[1 4 5]

S = [1 1 0
     0 0 1];
m = {'A';'B';'C'};
sz = size(S);
h = diff([zeros(sz(1),1),S],1,2)>0;
v = diff([zeros(1,sz(2));S],1,1)>0;
[~,idx]=find(h&v);
result = m(idx)