balakhonoff 0 9 октября, 2014 Опубликовано 9 октября, 2014 · Жалоба Всем доброго времени суток, Есть алгоритм, результаты которого хотелось бы улучшить. Задача такова: Есть некоторый медленно меняющийся процесс, зашумленный белым шумом. Обработка в реальном времени, то есть в каждый момент времени появляется новый отсчет данных и по нему нужно построить линейную аппроксимацию последнего участка кривой (скажем последние 100 точек). Аппроксимация считает по методу наименьших квадратов. Выходным параметром является коэффициент наклона прямой (которой мы аппроксимируем кривую). Сразу скажу, что реальный процесс сильно низкочастотный по сравнению с интервалом аппроксимации (эти 100 точек), то есть из-за этого существенной ошибки не возникает. Причем ошибка получаемого коэффициента выглядит как гармонический процесс с периодом в 1.5 раза большим, чем интервал, по которому строится аппроксимация (100 точек). На картинке временная реализация ошибки коэффициента и ее спектр. Причем если построить частотную характеристику этого алгоритма, получается, что на этой частоте коэффициент передачи имеет максимум, то есть она выглядит как ЧХ колебательной системы. Значит алгоритм усиливает шум в полосе, близкой к этой частоте, а как этого можно избежать? *линейная аппроксимация берется, потому что известно что процесс действительно медленно меняющийся. А для проверки берется вообще не меняющийся процесс (то есть просто шум) и проходя по нему такой же обработкой, я получаю тот же результат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KalashKS 0 9 октября, 2014 Опубликовано 9 октября, 2014 · Жалоба Всем доброго времени суток, Есть алгоритм, результаты которого хотелось бы улучшить. Задача такова: Есть некоторый медленно меняющийся процесс, зашумленный белым шумом. Обработка в реальном времени, то есть в каждый момент времени появляется новый отсчет данных и по нему нужно построить линейную аппроксимацию последнего участка кривой (скажем последние 100 точек). Аппроксимация считает по методу наименьших квадратов. Выходным параметром является коэффициент наклона прямой (которой мы аппроксимируем кривую). Сразу скажу, что реальный процесс сильно низкочастотный по сравнению с интервалом аппроксимации (эти 100 точек), то есть из-за этого существенной ошибки не возникает. Причем ошибка получаемого коэффициента выглядит как гармонический процесс с периодом в 1.5 раза большим, чем интервал, по которому строится аппроксимация (100 точек). На картинке временная реализация ошибки коэффициента и ее спектр. Причем если построить частотную характеристику этого алгоритма, получается, что на этой частоте коэффициент передачи имеет максимум, то есть она выглядит как ЧХ колебательной системы. Значит алгоритм усиливает шум в полосе, близкой к этой частоте, а как этого можно избежать? *линейная аппроксимация берется, потому что известно что процесс действительно медленно меняющийся. А для проверки берется вообще не меняющийся процесс (то есть просто шум) и проходя по нему такой же обработкой, я получаю тот же результат. Ваш алгоритм реализуется КИХ-фильтром с линейной импульсной характеристикой -49.5,48.5 ... 49.5 (с точностью до постоянного множителя). Его АЧХ именно такая, какую вы привели на рисунке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 9 октября, 2014 Опубликовано 9 октября, 2014 · Жалоба если нужны частоты сильно меньше чем 1/100 выборок, сделайте лучше простой БИХ фильтр с какой угодно низкой полосой пропускания. Y += (X-Y) / K. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
balakhonoff 0 10 октября, 2014 Опубликовано 10 октября, 2014 · Жалоба Ваш алгоритм реализуется КИХ-фильтром с линейной импульсной характеристикой -49.5,48.5 ... 49.5 (с точностью до постоянного множителя). Его АЧХ именно такая, какую вы привели на рисунке. да, я даже не сообразил :blink: если нужны частоты сильно меньше чем 1/100 выборок, сделайте лучше простой БИХ фильтр с какой угодно низкой полосой пропускания. Y += (X-Y) / K. Вы имеете ввиду фильтровать полученные значения наклона прямой БИХ-фильтром или с помощью него можно получить наклон прямой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 10 октября, 2014 Опубликовано 10 октября, 2014 · Жалоба Вы имеете ввиду фильтровать полученные значения наклона прямой БИХ-фильтром или с помощью него можно получить наклон прямой? АЧХ "линейного фита" по этим ста точкам мало чем отличается от простого скользящего среднего по этим же 100 точкам, если вам интересен сигнал с куда меньшей полосой чем 1/100, то БИХ фильтр можно сделать на сколь угодно малую частоту среза, КИХ же ограничен длиной фильтра в 100 точек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться