我有一个邻接矩阵 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的均值。我怎么能这样做?
答案 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所示。