【问题标题】:Calculate mean of all values below the diagnonal line in an adjacency matrix计算邻接矩阵中对角线以下所有值的平均值
【发布时间】:2017-08-12 00:14:05
【问题描述】:

我有一个邻接矩阵 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.2928?不应该是1.5吗?
  • 我的错,我输入了错误的数据。问题已更正。

标签: matlab matrix mean


【解决方案1】:

在一行中使用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)))

这会返回 @excaza 指示的 1.5

【讨论】:

  • 不错,很聪明!你介意扩展它以便人们了解发生了什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 2017-11-03
  • 2015-04-13
相关资源
最近更新 更多