如何计算矩阵中元素子集的总和?

时间:2010-09-13 15:16:51

标签: matlab matrix indexing sum

我想计算矩阵中可被2整除的元素之和。我该怎么办?我如何以坐标形式输出答案?

3 个答案:

答案 0 :(得分:4)

如果你有一个矩阵M,你可以使用logical index函数找到偶数元素所在的MOD(即掩码),它可以在整个矩阵上运行不需要循环。对于矩阵中的条目,即使余数在除以2后将为0:

index = (mod(M,2) == 0);

您可以使用函数FIND获取这些偶数条目的行索引和列索引:

[rowIndices,colIndices] = find(index);

您可以通过使用上面的逻辑掩码索引M以提取偶数条目并使用SUM函数来添加它们来获取偶数元素的总和:

evenSum = sum(M(index));

以下是使用函数MAGIC创建矩阵M的示例:

>> M = magic(3)

M =

     8     1     6
     3     5     7
     4     9     2

>> index = (mod(M,2) == 0)

index =

     1     0     1     %# A matrix the same size as M with
     0     0     0     %#   1 (i.e. "true") where entries of M are even
     1     0     1     %#   and 0 (i.e. "false") elsewhere

>> evenSum = sum(M(index))

evenSum =

    20

答案 1 :(得分:1)

这是矩阵M,只有偶数值:

(mod(M,2) == 0).*M

您可以将其与sum(M)sum(sum(M))相加(不确定“协调形式”的含义)。

答案 2 :(得分:0)

一些伪代码。几乎为每一行循环遍历每一列。

sum = 0
for(i = 0; i < matrix.num_rows; i++) {
  for(j = 0; j < matrix.num_cols; j++) {
    if(matrix[i][j] % 2 == 0)
      sum += matrix[i][j]
  }
}

不确定您的坐标形式是什么意思。