我有一个矩阵,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 :(得分: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)}
。
基本上,对于每个元素位置,在两个矩阵中找到它的“元素列表”,然后减去。对不起,我无法给你真实的代码。