在Matlab中不使用循环的预测编码



我有一组数字,我想使用预测编码来获得这组数据的较小值,因为每个值应该与上一个值相差不大。我只是从一个期望值开始,每个值都与上一个值相同,然后只存储错误。

对于一些简单的数据:

1 2 -3 1

我应该得到的值是

1 1 -5 4

我压缩的方式是一行,但为了解压缩,我需要最后一个值,所以我把它放在一个循环中。有没有一种方法可以做到这一点,并且可能更复杂(只看最后一个值)的预测编码,而不需要使用Matlab循环。

根据@Divakar的建议,可以通过来构建新值

B = [A(1) diff(A)];

通过从这个结果中获得原始结果,与上述过程相反

A = cumsum(B);