具有不等维矩阵的 MATLAB diff 函数

MATLAB diff function with matrices of unequal dimensions

我阅读了 MATLAB diff.m 自述文件,仍然无法弄清楚以下内容:

    a = [1 2 3]'
    b = [3 2 1 4; 1 1 1 5; 5 5 5 6]
    diff([a b]') = 
    2  -1  2
   -1   0  0
   -1   0  0
    3   4  1

MATLAB 在这里应用什么规则?如果其中一个矩阵(即 a 或 b)是逻辑矩阵,MATLAB 会应用不同的规则吗?或者 a 和 b 都是逻辑矩阵?

a = 
[1
 2
 3]

所以,

[a b] = 
[ 1 3 2 1 4
  2 1 1 1 5
  3 5 5 5 6 ]

因此

[a b]' = 
[ 1 2 3
  3 1 5
  2 1 5
  1 1 5
  4 5 6 ]

然后 diff 沿着大小不为 0 的第一个维度(即向下每一列)取差异。 这给出了结果

diff([a b]') = 
[ 2 -1  2
 -1  0  0
 -1  0  0
  3  4  1 ].

无论输入矩阵如何,MATLAB 都应用相同的规则。 运行 你的代码 line-by-line 在命令 window 中查看。

ab是这样的:

>> a = [1 2 3]'
a =
     1
     2
     3
>> b = [3 2 1 4; 1 1 1 5; 5 5 5 6]
b =
     3     2     1     4
     1     1     1     5
     5     5     5     6

然后 [a b]':

>> [a b]'
ans =
     1     2     3
     3     1     5
     2     1     5
     1     1     5
     4     5     6

现在对此应用 diff 规则如下:

[ row 2 - row 1 ]
[ row 3 - row 2 ]
[ row 4 - row 3 ]
[ row 5 - row 4 ]

你会得到

>> diff([a b]')
ans =
     2    -1     2
    -1     0     0
    -1     0     0
     3     4     1