Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделить прямолинейный участок на экспериментально, Нужна идея... 
V
    Опции темы
disputant
Дата 28.11.2011, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 28.11.2011

Репутация: 2
Всего: 3



День добрый! 

Имеется некая обработка экспериментальных данных, которые имеют вид кривой, примерно такого типа, как показанная на рисунке:
user posted image

При обработке надо найти прямолинейный участок и аппроксимировать его прямой - ну, как на рисунке. Сейчас крайние точки указываются вручную, после чего все считается, выводится etc etc... Но хочется автоматизировать этот процесс - чтоб программа хотя бы предлагала диапазон точек, в котором наилучшим образом строится прямая. 

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

Куда смотреть, в каком направлении - никаких идей?

Заранее спасибо  smile 
PM MAIL   Вверх
Akina
Дата 28.11.2011, 22:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Аппроксимируй, а потом уже бери производную.
Либо Строй прямую по МНК. Отбрасывай крайнюю точку, снова строй. Если изменение отрезка или тангенса больше заданной точности - правильно отбросил...




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ksnk
Дата 28.11.2011, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



Нужно нарисовать прямоугольник, вневписанный в ломанную, которая получается,если соединить все соседние точки. Средняя линия этого прямоугольника и будет искомой, в случае если прямоугольник получился "толстым" - выкидываем несколько граничных точек как "брак". 

вообще непонятна цель построения  smile Подгоняем измерения под известный результат? Решение должно быть прямой и нужно только найти погрешность?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Akina
Дата 28.11.2011, 22:56 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



disputant, вообще опишите физику эксперимента. Будет понятнее, что происходить и как обрабатывать.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mrgloom
Дата 29.11.2011, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



PM MAIL   Вверх
disputant
Дата 29.11.2011, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 28.11.2011

Репутация: 2
Всего: 3



Цитата(ksnk @ 28.11.2011,  22:35)
вообще непонятна цель построения  smile Подгоняем измерения под известный результат? Решение должно быть прямой и нужно только найти погрешность?


Нет, просто вся физика smile - в наклоне этого самого прямолинейного (ну, более-менее прямолинейного smile) участка. Если продолжить влево или вправо, будут горизонтальные участки. Вот и надо его найти - причем, еще и непонятно, где именно ее обрезать... Сейчас - мышкой тык слева, тык справа, выплевывается прямая и угол наклона (что, собственно, и есть самая конечная цель).

Будем (грубо) считать это, ну... например, вольтамперной характеристикой smile, но для каждого образца она может выскочить в другом месте по x, с  другим размахом. Бывают и просто фиг какие кривые :( Я просто для иллюстрации обрезал малость слева-справа. На самом деле захват шире. Но бывают варианты, где наклонная, например, упирается в левую границу и слева на горизонталь просто не успевает выйти. Справа обычно проблем нет - четкая горизонталь smile

Это сообщение отредактировал(а) disputant - 29.11.2011, 08:19
PM MAIL   Вверх
esperanto
Дата 29.11.2011, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 31.5.2003

Репутация: 2
Всего: 4



Подойдет Хаффа трансформ для поиска прямых линий
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET
PM MAIL   Вверх
disputant
Дата 29.11.2011, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 28.11.2011

Репутация: 2
Всего: 3



Цитата(esperanto @ 29.11.2011,  11:28)
Подойдет Хаффа трансформ для поиска прямых линий

Ага... почитал, попробую.

Представляется проблематичной оценка погрешности этого самого угла наклона. Для МНК формулы, грубо говоря, имеются, а для Хаффа не нашел пока. Ведь, как я понимаю, тут наклон получается сразу, по максимуму в фазовом пространстве?

Добавлено через 3 минуты и 22 секунды
Цитата(mrgloom @ 29.11.2011,  08:15)
http://ru.wikipedia.org/wiki/RANSAC

Не совсем уверен, так как здесь горизонтальные куски - не выбросы...
PM MAIL   Вверх
_Y_
Дата 29.11.2011, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



1. Кривая ну очень уж напоминает кривые титрования знакомые каждому химику. На них и ищется точка перегиба, а потом, при надобности, угол наклона в этой точке. Может это и нужно? Тогда наверняка легко будет найти по ключевым словам "кривая титрования" и "компютерная обработка" или "titration curve" и "computer processing".

2. Если же нужно искать именно прямую, находящуюся где-то в центре S-образной кривой, то можно сделать примерно так:
  • Нужно выбрать метод аппроксимации точек прямой - например один из вариантов метода наименьших квадратов. Этот выбор зависит от физической сущности процесса.
  • Для любого из методов, выбранных в первом пункте, имеется своя характеристика соответствия разброса точек вокруг аппрохимирующей прямой; т.е. некий коэффициент корреляции. Нужно апприори назначить граничное значение этому коеффициенту. Ну типа если R>0.5 то разброс точек преемлим. Если же нет - точки аппрохимировать прямой нельзя.
  • Теперь можно взять произвольные несколько точек, заведомо лежащих на прямой, в цикле добавлять к ним по одной точке справа и слева и смотреть выполняетйс ли условие R>0.5. Добавлять точки пока оно выполняется.



--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Pavia
Дата 29.11.2011, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Я так понимаю есть точки которые задают ломанную.
Тогда можно просто "упростить ломанную" по известному алгоритму и выбрать наибольшую по длине прямую.
PM MAIL   Вверх
disputant
Дата 3.12.2011, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 28.11.2011

Репутация: 2
Всего: 3



Всем большое спасибо!

Пошел по наилегчайшему пути smile Считаю производную, вблизи максимума сглаживаю и провожу прямую. После чего нахожу ее точки пересечения с горизонталями - Xmin и Xmax, и уже потом выполняю МНК с точками между ними.

Если бы еще это как-то обосновать математически...  smile 
PM MAIL   Вверх
_Y_
Дата 3.12.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



disputant, примерно так делали с кривыми титрования до появления компьютеров. Правда, графически на миллиметровке)))))


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
disputant
Дата 4.12.2011, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 28.11.2011

Репутация: 2
Всего: 3



Цитата(_Y_ @ 3.12.2011,  17:15)
disputant, примерно так делали с кривыми титрования до появления компьютеров. Правда, графически на миллиметровке)))))

Ну... скажу честно - я лет 20 назад даже сдавал кандминимум по неорганической химии, но увы - после защиты мне химия как-то ни разу не пригодилась, так что я основательно все это забыл :(

Но я рад, что, оказывается, этот метод возник не на ровном месте smile

PM MAIL   Вверх
Фантом
Дата 4.12.2011, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Построить аппроксимирующий сплайн, а затем найти участок с близкой к нулю второй производной и существенно отличной от нуля первой.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0569 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.