Разница между соседними элементами - диагональное направление - PullRequest
1 голос
/ 06 мая 2011

у меня есть матрица, я =

 5     4     3
 9     8     6
 6     3     4

Как рассчитать разницу между соседними элементами в диагональных направлениях. Я хочу эти выходные данные (для первой и последней строк и столбцов я не возражаю против заполнения):

  5     4     3
  5     5     6
  2    -3     4

и

 5     4     3
 9     3     2
 6    -6    -4

Ответы [ 2 ]

1 голос
/ 06 мая 2011

Вы можете сделать это с помощью простой индексации (в следующем примере предполагается заполнение нулями по краям, как в примере):

>> diagDiffs = I;
>> diagDiffs(2:end,2:end) = I(2:end,2:end)-I(1:end-1,1:end-1)

diagDiffs =

     5     4     3
     9     3     2
     6    -6    -4

>> antidiagDiffs = I;
>> antidiagDiffs(2:end,1:end-1) = I(2:end,1:end-1)-I(1:end-1,2:end)

antidiagDiffs =

     5     4     3
     5     5     6
    -2    -3     4
0 голосов
/ 06 мая 2011

Я не совсем уверен, как это сделать синтаксически в MATLAB, но в псевдокоде:

Диагональные соседние элементы для элемента i,j находятся в положениях:

Список элементов = {(i+1,j+1),(i+1,j-1),(i-1,j+1),(i+1,j-1)}.

По сути, для каждой позиции элемента найдите свой «список элементов» в обеих матрицах и вычтите. Извините, я не могу дать вам реальный код.

...