roboforum.ru

Технический форум по робототехнике.

Касательная к графику

Все здесь

Re: Касательная к графику

Сообщение =DeaD= » 25 май 2011, 15:49

Michael_K писал(а):Как все-таки математики далеки от реальности :)

Это не математики далеки от реальности, это разговоры о неведомых желаниях далеки от конкретной задачи :)

Добавлено спустя 3 минуты 3 секунды:
Просто если мы решаем математическую задачу, значит ставить её надо в математических терминах. Если же мы решаем прикладную задачу - ставить её надо в прикладных терминах.

А тут попытка спрятать прикладную задачу за математическими терминами без внятной формулировки математической задачи.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Касательная к графику

Сообщение Michael_K » 25 май 2011, 15:51

Да, это тоже правда.
И все-таки большинство реальных задач фактически не имеют четкой математической постановки. Очень часто работают чисто эмпирические методы. Хотя, конечно, анализу (в какой-то степени) и они тоже поддаются.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Касательная к графику

Сообщение =DeaD= » 25 май 2011, 15:57

Так ставить такие задачи нельзя в терминах другой области.
Ибо в такой постановке их вообще не решить :)

И тем более нельзя решить задачу ставя её в виде 1 примера графика и указывая в нём пальцем что нужно найти :) потому что такая задача включает в себя решение - вот же оно на рисунке!

Я так понимаю тут надо ставить математически задачу так, что есть ограничение, типа если на графике есть более чем 1 крупный участок (более 10% оси абсцисс в пределах графика) с практически нулевой 2 производной, тогда все участки кроме одного прилегают к границам графика - к левой или правой, и их нужно игнорировать.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Касательная к графику

Сообщение Michael_K » 25 май 2011, 16:00

Да, я отвечал на первую часть вашей реплики. С дописанным абсолютно согласен.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Касательная к графику

Сообщение =DeaD= » 25 май 2011, 16:02

В указанной мной выше постановке задачи решение может выглядеть, например, так:
1. Фильтруем и усредняем полученные значения, чтобы не было точечных всплесков;
2. Ищем области почти нулевой (<заданного порога) второй производной большие по ширине чем 10% ширины графика;
3. В случае если таких областей отделенных от левой и правой границы графика более чем одна - выдаём ошибку;
4. Если такая отделенная от левой и правой границы одна - выдаём соотв. ей касательную.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Касательная к графику

Сообщение Michael_K » 25 май 2011, 16:02

=DeaD= писал(а):такая задача включает в себя решение - вот же оно на рисунке!

Изображение
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Касательная к графику

Сообщение CiSi » 25 май 2011, 16:59

=DeaD= писал(а):1. Фильтруем и усредняем полученные значения, чтобы не было точечных всплесков;

как это сделать?
Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

Re: Касательная к графику

Сообщение dccharacter » 26 май 2011, 15:53

CiSi писал(а):как это сделать?

делается "движущее окно" значений

например avr - измеренное значение. avr_med - усредненное значение.
берем последние 16-ть значений (например):

int avr = 0, avr_med = 0;
while (1)
{
//measure avr;
.....
//
avr_med = avr_med * (15/16) + avr/16;
}
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Касательная к графику

Сообщение Michael_K » 26 май 2011, 16:58

Эмм...

dccharacter, то что вы написали - совсем не движущееся окно (которое по сути КИХ-фильтр), а вовсе даже наоборот - БИХ-фильтр. Для фильтрации экспериментальных данных (тем более, ограниченного набора, тем более, если нужно не терять "фазу" - координату по оси X) он не очень применим.

Чтобы посоветовать конкретный алгоритм фильтрации, нужно смотреть на данные и знать как они снимались (например, через равные промежутки по оси Х или Y или "строго в беспорядке"), как распределен шум/погрешности и т.п.

Практически же, если у вас есть критерий "правильности" (а у вас он, очевидно, есть - вы же сказали, что вас какая-то касательная "не устраивает"), то проще "поиграть" параметрами и способом фильтрации на нескольких наборах данных.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Касательная к графику

Сообщение dccharacter » 26 май 2011, 17:10

просто я традиционно сильно затупил (не читал начало треда)

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

Это я предполагаю, что график выглядит так, как на рисунке.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Касательная к графику

Сообщение =DeaD= » 27 май 2011, 00:10

CiSi писал(а):как это сделать?

Например так - строим усредненный график - вокруг каждой точки выбираем окрестность с центром в этой точке и общей шириной пусть в 5% ширины графика, если там одна наша точка - оставляем, иначе аппроксимируем точки отрезком и считаем, что наша точка в усредненном графике будет иметь координату Y соответствующую на полученном отрезке координате Х нашей точки.

Лучше конечно не тупо усреднять так по всем, а перед таким усреднением сделать предзаход, в котором вообще выкинуть точки которые при таком усреднении сильно перемещаются по оси Y, скажем больше чем на 5% высоты графика.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Пред.

Вернуться в Свободное общение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18