Использование функции фильтра для генерации недостающих данных - PullRequest
1 голос
/ 22 июня 2011

У меня есть векторы данных, которые я передаю через функцию filter () - указанный фильтр был сконструирован для создания разумного приближения к исходному сигналу, который затем используется для идентификации «плохих» элементов в исходных данных (указанные элементыкак правило, вызвано нечастыми кратковременными сбоями датчика и совершенно отличны от достоверных данных).После выявления этих плохих элементов я хочу вернуться и заменить их чем-то разумным.

Один из подходов состоит в замене плохих значений отфильтрованным выводом;однако выходные данные были сгенерированы с неверными значениями, поэтому он имеет некоторое количество нежелательных искажений.

В идеале, я бы хотел сказать, что filter () предположил, что плохие элементы отсутствуют.и что вместо этого он должен генерировать разумную интерполяцию отсутствующего значения [s] (например, на основе окружающих значений и свойств фильтра) для использования при построении вывода.

Мне сказали, чтонекоторые наборы инструментов позволяют вставлять специальные значения (например, NaN ) для указания на отсутствующие (но предполагаемые правильные) данные.

Я посмотрел исходный код фильтра Octave () иничего очевидного не выпрыгнуло из меня - есть ли специальное значение (или другой механизм), чтобы сказать filter (), что предполагается, что данные хорошего поведения отсутствуют (и должны быть вставлены по мере необходимости)?

1 Ответ

6 голосов
/ 22 июня 2011

Вставка NaN не будет работать для этого. Функция filter довольно проста - она ​​просто реализует БИХ-фильтр.

Если ваш сигнал плавный и медленно изменяется, вы можете просто использовать interp1 для интерполяции новых значений для плохих участков на основе хороших данных с обеих сторон.

Если ваш сигнал имеет более сложное спектральное содержание, я думаю, что "Wiener interpolation" - это фаза для Google. Для экстраполяции вы можете использовать кодирование с линейным предсказанием .

...