我有一个名为 M 的 200 x 200 邻接矩阵。这是200个节点的连接强度(节点编号为1到200,并且在M中以升序排列 - 即,M(23,45)是节点23和45的连接强度)。在这200个节点中,我对三个节点子集感兴趣。
subset1 = [2,34,36,42,69,102,187];
subset2 = [5,11,28,89,107,199];
subset3 = [7,55,60,188];
使用 M ,我想进行以下操作:
分别在 subset1 , subset2 和 subset3 内的连接强度的平均值。例如,对于subset1,这将是所有可能的节点对2,34,26,...,187的平均连接。
在 subset1 , subset2 和 subset3 之间找到连接强度。这将是跨越三个子集的所有可能对的所有节点对之间的连接强度的平均值(子集1和子集2,子集2和子集3以及子集1和子集3之间的连接的平均值)。请注意,连接之间的这种情况并不等同于将三个子集中的所有节点放入单个矩阵中(例如,两个子集之间的连接是一个子集中每个节点与另一个中的每个节点的平均连接子集)。
我到目前为止尝试使用for循环索引 M 。它很笨重,特别是当我在每个子集中有大量节点时。有人可以帮忙吗?
答案 0 :(得分:0)
M1 = M(subset1, subset1);
ind = triu(true(size(M1)), 1); % upper triangle
M1_avg = mean(M1(ind));
我会把M2_avg和M1_M2_avg留给你。