相邻元素之间的差异 - 对角线方向

时间:2011-05-06 05:33:31

标签: matlab matrix diagonal

我有一个矩阵,I =

 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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我不太确定如何在MATLAB中进行语法处理,但是在psudocode中:

元素i,j的对角线相邻元素位于:

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

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