2011-05-06 48 views
1

我有一个矩阵,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 
+0

你想如何做到这一点在MATLAB或其他语言的答案吗? – soandos 2011-05-06 05:39:59

+0

我想要如何在MATLAB中做到这一点的答案。 – 2011-05-06 06:18:33

回答

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 
0

我不太清楚如何去做语法在MATLAB,但在psudocode:

为元件i,j对角线相邻元件在位置:元件

清单= {(i+1,j+1),(i+1,j-1),(i-1,j+1),(i+1,j-1)}

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