Matlab-减去数组中的前一个加上差异

Matlab- Subtraction of previous in array plus addition of difference

所以如果我有一个矩阵 s;

s = [4;5;9;12;3]

我想计算一个条目和它之前的条目之间的差异加上之前的差异,这样我就可以得到

s = [ 4 0; 5 1; 9 5; 12 8; 3 -1]

我是 matlab 的新手。我知道需要一个 for 循环来遍历原始矩阵

您的结果的第二列似乎基本上是 cumsum(diff(s))。然而,那不是 "the difference between an entry and its previous entry plus the previous difference";这是差异的累积和

所以,如果你想要在第二列中的是差异的累计和:

result = [s [0; cumsum(diff(s))]];

在 matlab 中,你有很多直接使用矩阵的函数,这里提供的是 diff and cumsum 请访问 matlab 文档,以及手动连接的函数,如 horzcat 或 vertcat int 他的案例像这样得到你需要的东西:

>> s = [4;5;9;12;3]

s =

     4
     5
     9
    12
     3

获取向量my_cum_diff,这是向量中元素之间的差异

my_cum_diff = [0; cumsum(diff(s))]

my_cum_diff = [0; cumsum(diff(s))]

my_cum_diff =

     0
     1
     5
     8
    -1

最后连接两个向量

final_s=[s my_cum_diff]

final_s =

     4     0
     5     1
     9     5
    12     8
     3    -1