我想计算矩阵中可被2整除的元素之和。我该怎么办?我如何以坐标形式输出答案?
答案 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]
}
}
不确定您的坐标形式是什么意思。