Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];

Вниз

Алгоритм проверки на похожесть графиков двух функций   Найти похожие ветки 

 
Blind Guardian   (2007-12-24 19:31) [0]

Здравствуйте. Такая вот задача:
У меня есть два множества функций (дискретно заданных). Заданы в виде
TFunc=record
 values:array of double;
 Xmin,Xmax:integer;
end;


Xmin..Xmax - это интервал на котором задана функция. Получается length(values)=Xmax-Xmin+1.
Нужно сопоставить наиболее похожие друг на друга функции или их части (одна функция может быть очень похожа только на часть другой функции, это тоже нужно учесть)

Я сделал вот так: брал две функции, находил пересечение интервалов, на которых они заданы (получал интервал a..b). Далее делал примерно так:

// func1,func2:TFunc;
result:=0;
for x:=a to b do
 result:=result+abs(func1.values[x-func1.Xmin]-func2.values[x-func2.Xmin];
result:=result/(b-a+1);

То есть, посчитал площадь зоны между графиками двух функций, потом нашел среднее значение этой площади по интервалу a..b. Таким образом, я получал некоторый коэффициент отличия.

Может, кто-нибудь подскажет чего умнее?


 
Юрий Зотов ©   (2007-12-24 20:53) [1]

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

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

Это и есть главный вопрос - что такое "похожесть". И ответить на него может только тот, кто знает конечную задачу. То есть, Вы и никто другой.


 
Германн ©   (2007-12-25 00:52) [2]

Я тоже в первую бы очередь заинтересовался бы "физическим смыслом" такого сравнения. Вряд ли ведь это "искусство ради искусства".


 
Jeer ©   (2007-12-25 09:36) [3]


> Blind Guardian   (24.12.07 19:31)


Кластерный анализ.
Это множество алгоритмов выявления агломеративных признаков на основе мер близости и разделение множества реализаций на классы.
Мерами близости при выявлении классов и соотнесении реализации с другими, т.н. классификация (таксономия) , могут быть расстояния - евклидово, манхэттенское, степенное, процент несогласия и др.
В частности, необязательно рассматривать процесс, как неделимое целое.

Собственно, алгоритмы кластеризации:
- иерархический (дендрограммы);
- двухвходовой;
- К-средних;
- etc > 100 алгоритмов.


 
Blind Guardian   (2007-12-25 17:12) [4]

Юрий Зотов ©   (24.12.07 20:53) [1]
вот, что я имею ввиду под похожестью. К примеру: вы взяли несколько (5 к примеру) белых проводков (пластичных), погнули их так, как будто бы они - это графики функций y=f(x). Расместили их на черном столе. Сфотографировали. Потом поменяли их местоположение на столе (не вращая, а перемещая поступательно). Задача программы : по фотографиям сопоставить проводки. Может быть, проводки помялись самую малость, пока вы их перемещали =) , да и шум присутствует, то есть, стопроцентного совпадения каждого проводка с первой фотографии с проводком со второй фотографии не будет. Этап выделения белых линий на черном фоне в данном случае меня не интересует. А вот проверка на эту самую похожесть - интересует.
Примечание: функций намного больше чем 5 (примерно 2000), длины варьируются от 1 до 500 (в общем-то, очень короткие функци можно не рассматривать даже) И функция скорее всего разное количество в обоих множествах сопоставления.


 
Blind Guardian   (2007-12-25 17:17) [5]

(После того, как вы поменяли местоположения проводков на столе, вы ещё раз фотографируете стол. Камера при всём процессе жестко закреплена и направлена перпендикулярно столу. Про искажения можно не думать. Угол обзора небольшой, то есть, как бы перспективы тоже практически нет)


 
Jeer ©   (2007-12-26 09:31) [6]

Если известны исходные и слегка искаженные y=f(x), то сопоставление можно вести методами корреляционного анализа.


 
Apollon ©   (2007-12-28 19:44) [7]

а проводки двигаются только по вертикали или по горизонтали тоже?

я бы нашел среднее расстояние между графиками, а затем рассматривал среднеквадратичные отклонения по каждой точке


 
TStas ©   (2008-01-06 04:50) [8]

А нельзя проще: взять и "проводок" просто размыть. Попадает в него другой, неразмытый - он похож.


 
Германн ©   (2008-01-06 05:01) [9]


> Blind Guardian   (25.12.07 17:12) [4]
>
>

Эээ. Это вроде уже как бы было. Только с другим ником.
Модератора на тебя нет!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.042 c
15-1219088046
Тимохов
2008-08-18 23:34
2008.10.12
Helpdesk и работа с пользователями


1-1199816989
Wolf
2008-01-08 21:29
2008.10.12
Как установить лимит по времени на некую процедуру ?


1-1200216502
Igor23
2008-01-13 12:28
2008.10.12
Работа с Excel


15-1218782666
MBo
2008-08-15 10:44
2008.10.12
Анонимные методы в будущем Тибуроне


2-1220458117
Fok
2008-09-03 20:08
2008.10.12
Как удалить последний символ в строке?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский