![]() |
|
|
![]()
|
|
| disputant |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: 2 Всего: 3 |
День добрый!
Имеется некая обработка экспериментальных данных, которые имеют вид кривой, примерно такого типа, как показанная на рисунке: ![]() При обработке надо найти прямолинейный участок и аппроксимировать его прямой - ну, как на рисунке. Сейчас крайние точки указываются вручную, после чего все считается, выводится etc etc... Но хочется автоматизировать этот процесс - чтоб программа хотя бы предлагала диапазон точек, в котором наилучшим образом строится прямая. Идей практически никаких. Если брать производные - скачет довольно сильно, так что что-то типа гауссовой кривой получается очень уж некрасивой. Подбирал точки, чтоб с максимальной точностью ложилось методом наименьших квадратов - так он старается найти три наиболее на прямой... Куда смотреть, в каком направлении - никаких идей? Заранее спасибо |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Аппроксимируй, а потом уже бери производную.
Либо Строй прямую по МНК. Отбрасывай крайнюю точку, снова строй. Если изменение отрезка или тангенса больше заданной точности - правильно отбросил... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 7 Всего: 386 |
Нужно нарисовать прямоугольник, вневписанный в ломанную, которая получается,если соединить все соседние точки. Средняя линия этого прямоугольника и будет искомой, в случае если прямоугольник получился "толстым" - выкидываем несколько граничных точек как "брак".
вообще непонятна цель построения -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
disputant, вообще опишите физику эксперимента. Будет понятнее, что происходить и как обрабатывать.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
||||
|
||||
| disputant |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: 2 Всего: 3 |
Нет, просто вся физика Будем (грубо) считать это, ну... например, вольтамперной характеристикой Это сообщение отредактировал(а) disputant - 29.11.2011, 08:19 |
|||
|
||||
| esperanto |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 31.5.2003 Репутация: 2 Всего: 4 |
Подойдет Хаффа трансформ для поиска прямых линий
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET |
|||
|
||||
| disputant |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: 2 Всего: 3 |
Ага... почитал, попробую. Представляется проблематичной оценка погрешности этого самого угла наклона. Для МНК формулы, грубо говоря, имеются, а для Хаффа не нашел пока. Ведь, как я понимаю, тут наклон получается сразу, по максимуму в фазовом пространстве? Добавлено через 3 минуты и 22 секунды
Не совсем уверен, так как здесь горизонтальные куски - не выбросы... |
||||
|
|||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
1. Кривая ну очень уж напоминает кривые титрования знакомые каждому химику. На них и ищется точка перегиба, а потом, при надобности, угол наклона в этой точке. Может это и нужно? Тогда наверняка легко будет найти по ключевым словам "кривая титрования" и "компютерная обработка" или "titration curve" и "computer processing".
2. Если же нужно искать именно прямую, находящуюся где-то в центре S-образной кривой, то можно сделать примерно так:
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Я так понимаю есть точки которые задают ломанную.
Тогда можно просто "упростить ломанную" по известному алгоритму и выбрать наибольшую по длине прямую. |
|||
|
||||
| disputant |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: 2 Всего: 3 |
Всем большое спасибо!
Пошел по наилегчайшему пути Если бы еще это как-то обосновать математически... |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
disputant, примерно так делали с кривыми титрования до появления компьютеров. Правда, графически на миллиметровке)))))
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| disputant |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: 2 Всего: 3 |
Ну... скажу честно - я лет 20 назад даже сдавал кандминимум по неорганической химии, но увы - после защиты мне химия как-то ни разу не пригодилась, так что я основательно все это забыл :( Но я рад, что, оказывается, этот метод возник не на ровном месте |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 2 Всего: 49 |
Построить аппроксимирующий сплайн, а затем найти участок с близкой к нулю второй производной и существенно отличной от нуля первой.
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |