Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Аппроксимация данных
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Goose
Всем доброго времени суток,

Есть алгоритм, результаты которого хотелось бы улучшить.

Задача такова: Есть некоторый медленно меняющийся процесс, зашумленный белым шумом. Обработка в реальном времени, то есть в каждый момент времени появляется новый отсчет данных и по нему нужно построить линейную аппроксимацию последнего участка кривой (скажем последние 100 точек). Аппроксимация считает по методу наименьших квадратов. Выходным параметром является коэффициент наклона прямой (которой мы аппроксимируем кривую). Сразу скажу, что реальный процесс сильно низкочастотный по сравнению с интервалом аппроксимации (эти 100 точек), то есть из-за этого существенной ошибки не возникает. Причем ошибка получаемого коэффициента выглядит как гармонический процесс с периодом в 1.5 раза большим, чем интервал, по которому строится аппроксимация (100 точек). На картинке временная реализация ошибки коэффициента и ее спектр. Причем если построить частотную характеристику этого алгоритма, получается, что на этой частоте коэффициент передачи имеет максимум, то есть она выглядит как ЧХ колебательной системы.
Значит алгоритм усиливает шум в полосе, близкой к этой частоте, а как этого можно избежать?

*линейная аппроксимация берется, потому что известно что процесс действительно медленно меняющийся. А для проверки берется вообще не меняющийся процесс (то есть просто шум) и проходя по нему такой же обработкой, я получаю тот же результат.
KalashKS
Цитата(Goose @ Oct 9 2014, 18:52) *
Всем доброго времени суток,

Есть алгоритм, результаты которого хотелось бы улучшить.

Задача такова: Есть некоторый медленно меняющийся процесс, зашумленный белым шумом. Обработка в реальном времени, то есть в каждый момент времени появляется новый отсчет данных и по нему нужно построить линейную аппроксимацию последнего участка кривой (скажем последние 100 точек). Аппроксимация считает по методу наименьших квадратов. Выходным параметром является коэффициент наклона прямой (которой мы аппроксимируем кривую). Сразу скажу, что реальный процесс сильно низкочастотный по сравнению с интервалом аппроксимации (эти 100 точек), то есть из-за этого существенной ошибки не возникает. Причем ошибка получаемого коэффициента выглядит как гармонический процесс с периодом в 1.5 раза большим, чем интервал, по которому строится аппроксимация (100 точек). На картинке временная реализация ошибки коэффициента и ее спектр. Причем если построить частотную характеристику этого алгоритма, получается, что на этой частоте коэффициент передачи имеет максимум, то есть она выглядит как ЧХ колебательной системы.
Значит алгоритм усиливает шум в полосе, близкой к этой частоте, а как этого можно избежать?

*линейная аппроксимация берется, потому что известно что процесс действительно медленно меняющийся. А для проверки берется вообще не меняющийся процесс (то есть просто шум) и проходя по нему такой же обработкой, я получаю тот же результат.


Ваш алгоритм реализуется КИХ-фильтром с линейной импульсной характеристикой -49.5,48.5 ... 49.5 (с точностью до постоянного множителя). Его АЧХ именно такая, какую вы привели на рисунке.
_pv
если нужны частоты сильно меньше чем 1/100 выборок, сделайте лучше простой БИХ фильтр с какой угодно низкой полосой пропускания.
Y += (X-Y) / K.

Goose
Цитата(KalashKS @ Oct 9 2014, 19:42) *
Ваш алгоритм реализуется КИХ-фильтром с линейной импульсной характеристикой -49.5,48.5 ... 49.5 (с точностью до постоянного множителя). Его АЧХ именно такая, какую вы привели на рисунке.

да, я даже не сообразил blink.gif


Цитата(_pv @ Oct 9 2014, 21:50) *
если нужны частоты сильно меньше чем 1/100 выборок, сделайте лучше простой БИХ фильтр с какой угодно низкой полосой пропускания.
Y += (X-Y) / K.

Вы имеете ввиду фильтровать полученные значения наклона прямой БИХ-фильтром или с помощью него можно получить наклон прямой?
_pv
Цитата(Goose @ Oct 10 2014, 13:59) *
Вы имеете ввиду фильтровать полученные значения наклона прямой БИХ-фильтром или с помощью него можно получить наклон прямой?

АЧХ "линейного фита" по этим ста точкам мало чем отличается от простого скользящего среднего по этим же 100 точкам, если вам интересен сигнал с куда меньшей полосой чем 1/100, то БИХ фильтр можно сделать на сколь угодно малую частоту среза, КИХ же ограничен длиной фильтра в 100 точек.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.