1

我有一个矩阵,我 =

 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
4

2 回答 2

1

您可以通过简单的索引来做到这一点(以下假设在您的示例中边缘周围填充零):

>> 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
于 2011-05-06T15:49:26.160 回答
0

我不太确定如何在 MATLAB 中以语法方式执行此操作,但在 psudocode 中:

element 的对角线相邻元素i,j位于以下位置:

元素列表 = {(i+1,j+1),(i+1,j-1),(i-1,j+1),(i+1,j-1)}

基本上,对于每个元素位置,在两个矩阵中找到它的“元素列表”,然后减去。对不起,我不能给你真正的代码。

于 2011-05-06T08:19:02.907 回答