реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Аппроксимация данных, как уменьшить ошибку
Goose
сообщение Oct 9 2014, 14:52
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 165
Регистрация: 26-02-10
Из: Москва
Пользователь №: 55 683



Всем доброго времени суток,

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

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

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

Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
KalashKS
сообщение Oct 9 2014, 15:42
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Цитата(Goose @ Oct 9 2014, 18:52) *
Всем доброго времени суток,

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

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

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


Ваш алгоритм реализуется КИХ-фильтром с линейной импульсной характеристикой -49.5,48.5 ... 49.5 (с точностью до постоянного множителя). Его АЧХ именно такая, какую вы привели на рисунке.
Go to the top of the page
 
+Quote Post
_pv
сообщение Oct 9 2014, 17:50
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



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

Go to the top of the page
 
+Quote Post
Goose
сообщение Oct 10 2014, 06:59
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 165
Регистрация: 26-02-10
Из: Москва
Пользователь №: 55 683



Цитата(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.

Вы имеете ввиду фильтровать полученные значения наклона прямой БИХ-фильтром или с помощью него можно получить наклон прямой?
Go to the top of the page
 
+Quote Post
_pv
сообщение Oct 10 2014, 08:02
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



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

АЧХ "линейного фита" по этим ста точкам мало чем отличается от простого скользящего среднего по этим же 100 точкам, если вам интересен сигнал с куда меньшей полосой чем 1/100, то БИХ фильтр можно сделать на сколь угодно малую частоту среза, КИХ же ограничен длиной фильтра в 100 точек.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th June 2025 - 18:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016