索引邻接矩阵的子集
Indexing a subset of an adjacency matrix
我有一个名为 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,我想进行以下操作:
连接强度的平均值within subset1, subset2,和 subset3,分开。例如,对于子集 1,这将是所有可能的节点对 2、34、26、...、187 的平均连接。
找到在 subset1, subset2 和 subset2 之间的连接强度子集 3。这将是跨越三个子集的所有可能对的所有节点对之间的连接强度的平均值(子集 1 和子集 2、子集 2 和子集 3 以及子集 1 和子集 3 之间的连接的平均值)。请注意,这种连接之间的连接并不等同于将来自三个子集的所有节点放入一个矩阵中(例如,两个子集之间的连接是一个子集中的每个节点与 另一个子集中的每个节点的平均连接 子集)。
到目前为止我尝试的是使用 for 循环索引 M。它很笨重,尤其是当我在每个子集中有大量节点时。有人可以帮忙吗?
M1 = M(subset1, subset1);
ind = triu(true(size(M1)), 1); % upper triangle
M1_avg = mean(M1(ind));
我把M2_avg和M1_M2_avg留给你
我有一个名为 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,我想进行以下操作:
连接强度的平均值within subset1, subset2,和 subset3,分开。例如,对于子集 1,这将是所有可能的节点对 2、34、26、...、187 的平均连接。
找到在 subset1, subset2 和 subset2 之间的连接强度子集 3。这将是跨越三个子集的所有可能对的所有节点对之间的连接强度的平均值(子集 1 和子集 2、子集 2 和子集 3 以及子集 1 和子集 3 之间的连接的平均值)。请注意,这种连接之间的连接并不等同于将来自三个子集的所有节点放入一个矩阵中(例如,两个子集之间的连接是一个子集中的每个节点与 另一个子集中的每个节点的平均连接 子集)。
到目前为止我尝试的是使用 for 循环索引 M。它很笨重,尤其是当我在每个子集中有大量节点时。有人可以帮忙吗?
M1 = M(subset1, subset1);
ind = triu(true(size(M1)), 1); % upper triangle
M1_avg = mean(M1(ind));
我把M2_avg和M1_M2_avg留给你