2014-09-29 2 views
0

У меня есть набор чисел, и я хочу использовать прогностическое кодирование для получения меньших значений для этого набора данных, поскольку каждое значение не должно сильно отличаться от последнего. Я просто начинал очень просто с ожидаемого значения, что каждое значение будет таким же, как и последнее, а затем просто сохранит ошибку.Предиктивное кодирование без использования петель в Matlab?

Для некоторых простых данных:

1 2 -3 1 

значения я должен получить в

1 1 -5 4 

То, как я делал это сжатие было одной линии, но распаковывать мне нужно последнее значение, так Я поставил это в цикле. Есть ли способ сделать это и, возможно, более сложный (смотрящий только на последнее значение) прогностическое кодирование без необходимости использования контуров Matlab.

+0

Думаю, вы ищут 'diff'. – Divakar

ответ

0

Как было предложено @Divakar, конструируя новые значения можно сделать

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

Получение оригинала из этого результата, обратная вышеописанной процедуры осуществляется через

A = cumsum(B); 
+0

Я думал об этом. Для более сложных функций я не думаю, что у них есть такое простое решение. Знаете ли вы, какие решения могут также работать с линейным предсказательным кодированием? – Tormyst

+0

Я бы посмотрел на ['lpc'] (http://www.mathworks.nl/help/signal/ref/lpc.html). Я должен признать, что я действительно не знаю, что вы подразумеваете под декомпрессией. Я поставил обратный подход в свой ответ, но я не знаю о существовании такого рода процедур для линейного предсказательного кодирования. – MeMyselfAndI

+0

Я могу прилично поверить, что я просто запутался. Страница помогла, хотя, даже если это не совсем то, что я ищу – Tormyst

Смежные вопросы