计算邻接矩阵中诊断线以下所有值的平均值

时间:2017-03-20 15:59:19

标签: matlab matrix mean

我有一个邻接矩阵 M ,类似这样:

[1  2   0   2   4
 2  1   2   0  -1
 0  3   1   2   3
 2  0   2   1   0
 4 -1   3   0   1]

我想计算对角线以下(但不包括)所有值的平均值。最终输出应 1.5

为了获得这些价值观,我想我会使用N = tril(M,-1)。问题是我现在在矩阵 N 的上部和下部有零,因此mean(sum(N)./sum(N~=0))不起作用。因为我也有负值,所以我也不能做值> = 0的均值。我怎么能这样做?

1 个答案:

答案 0 :(得分:6)

在一行中使用logical indexing仅提取对角线以下的值:

M = [ 1  2  0  2  4;
      2  1  2  0 -1;
      0  3  1  2  3;
      2  0  2  1  0;
      4 -1  3  0  1];

mean(M(tril(true(size(M)),-1)))

这将返回1.5,如@excaza所示。