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

Matlab 如何计算矩阵中元素子集的和?,matlab,matrix,indexing,sum,Matlab,Matrix,Indexing,Sum,我想计算矩阵中可被2整除的元素之和。我该怎么做?如何以坐标形式输出答案?一些伪代码。对于每一行,几乎都要循环遍历每一列 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] } } sum=0 对于(i=0;i

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

一些伪代码。对于每一行,几乎都要循环遍历每一列

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]
  }
}
sum=0
对于(i=0;i

不知道你所说的坐标形式是什么意思。

一些伪代码。对于每一行,几乎都要循环遍历每一列

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]
  }
}
sum=0
对于(i=0;i

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

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

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


您可以使用
sum(M)
sum(M))
(不确定“坐标形式”是什么意思)。

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

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


您可以使用
sum(M)
sum(sum(M))
(不确定“坐标形式”是什么意思)。

如果您有一个矩阵
M
,您可以使用函数找到偶数元素所在位置的(即掩码),该函数可以在整个矩阵上运行,而无需循环。对于矩阵中的偶数项,除以2后余数为0:

index = (mod(M,2) == 0);
您可以使用以下函数获取这些偶数项的行和列索引:

您可以通过使用上面的逻辑掩码索引
M
来提取偶数项,并使用函数将它们相加,从而获得偶数元素的总和:

evenSum = sum(M(index));
下面是一个使用函数创建矩阵
M
的示例:


如果您有一个矩阵
M
,您可以通过使用函数找到偶数元素所在位置的(即掩码),该函数可以在整个矩阵上运行,而无需循环。对于矩阵中的偶数项,除以2后余数为0:

index = (mod(M,2) == 0);
您可以使用以下函数获取这些偶数项的行和列索引:

您可以通过使用上面的逻辑掩码索引
M
来提取偶数项,并使用函数将它们相加,从而获得偶数元素的总和:

evenSum = sum(M(index));
下面是一个使用函数创建矩阵
M
的示例:


MATLAB没有
%
运算符。你想要的
%
用于发表评论。@gnovice-谢谢,这就是你打字太快的结果:)没问题。这是一个很容易忘记的问题,在使用过许多其他语言后,这些语言都有
%
作为运算符。MATLAB没有
%
运算符。你想要的
%
用于发表评论。@gnovice-谢谢,这就是你打字太快的结果:)没问题。这是一个很容易忘记的问题,在与许多其他语言一起工作后,这些语言确实有
%
作为操作符。OP将MATLAB标记为语言。应该避免循环,因为矢量化通常要快得多。Gnovice的解决方案甚至可以简化为一行:
sum(M(mod(M,2)==0))
噢,哇,谢谢。我想我没有意识到OP最初将它标记为MATLAB。My Mirror.OP将MATLAB标记为语言。应该避免循环,因为矢量化通常要快得多。Gnovice的解决方案甚至可以简化为一行:
sum(M(mod(M,2)==0))
噢,哇,谢谢。我想我没有意识到OP最初将它标记为MATLAB。我的错误。