Как вычислить сумму подмножества элементов в матрице? - PullRequest
1 голос
/ 13 сентября 2010

Я хочу вычислить сумму элементов в матрице, которые делятся на 2. Как мне это сделать? И как мне вывести ответ в координатной форме?

Ответы [ 3 ]

4 голосов
/ 13 сентября 2010

Если у вас есть матрица 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
1 голос
/ 13 сентября 2010

Это матрица M только с ее четными значениями:

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

Вы можете суммировать его с sum(M) или sum(sum(M)) (не уверен, что означает «форма координат»).

0 голосов
/ 13 сентября 2010

Какой-то псевдокод. Довольно много циклов по каждому столбцу для каждой строки.

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]
  }
}

Не уверен, что вы подразумеваете под формой координат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...