Если у вас есть матрица M
, вы можете найти логический индекс (т.е. маску) для расположения четных элементов, используя функцию MOD , которая может работать сцелая матрица без необходимости петель.Для записей в матрице, которые являются даже остатком, будет 0 после деления на 2:
index = (mod(M,2) == 0);
Вы можете получить индексы строк и столбцов этих четных записей, используя функцию FIND :
[rowIndices,colIndices] = find(index);
И вы можете получить сумму четных элементов, индексировав M
с помощью логической маски сверху, чтобы извлечь четные записи, и используя функцию SUM , чтобы сложить их:
evenSum = sum(M(index));
Вот пример с матрицей M
, созданной с использованием функции MAGIC :
>> 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