![]() |
|
|
![]()
|
|
| andreybs |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 7.12.2012 Репутация: нет Всего: нет |
На форуме есть несколько тем с похожим названием, но моя задача немного отличается, поэтому решил создать свою тему.
Имеем временной ряд произвольной длины L и эталонный вектор размерности N (N<L). Необходимо найти участки временного ряда длиной M (N<M<L), похожие на эталонный вектор. Во временном ряде можно выделить «опорные точки», однозначно его характеризующие. Будем считать, что эталонный вектор состоит только из опорных точек. Тогда критерием подобия участка временного ряда и эталонного вектора является «условное совпадение» опорных точек временного ряда и эталонного вектора. Условное оно потому, что во временном ряде возможны искажения по амплитуде, частоте, фазе, избыточности опорных точек по сравнению с эталоном. Необходимо разработать алгоритм, на вход которому подается эталонный вектор и участок временного ряда с выделенными опорными точками, а на выходе примерно такой результат: подобный вектор L найден, его начало/конец = {L1,L2} , степень достоверности подобия Х%. Пример из жизни (для понимания вопроса, хотя это и не моя ситуация). У нас есть эталонная фраза, произнесенная человеком в тишине. Нам нужно найти внутри музыкальной композиции момент, когда человек поет эталонную фразу на фоне музыки. Как подступиться к задаче? Пока все испробованные мною методы неустойчивы к искажениям. В этом проблема. |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Бьешь эталон на куски.
Пробуешь искать эти куски в сигнале. Я бы 2 метода использовал. Один в амплитудно-частотной области и другой в амплитудно-временной. Так вот во временной области. В качестве метрики сравнение я бы взял MSE. Для соблюдения подобия перебираешь начальное положение куска и масштаб. Масштабировать советую при помощи оператора линейной интерполяции(Ланцош ак SinC негодится). В частотной области всё по другому. В качестве метрике корреляция по Писанину. Перебираешь разные временные участки. Масштабирование делаешь через SinC. После метрики в обоих случаях отсекаешь по порогу лишнее. Далее второй проход. Перебираем положение X0 и масштаб M0, но на этот раз уже берём эталон. В качестве метрики используем НС. На вход которой подаем номер участка из эталона и его положение относительно X0 и масштаб относительно M0. И таких 2*k признаков попавших в участок X0+L*M0 где L - длина шаблона. Если на этом участке несколько признаков, то выбираем самые сильные. 2*k потому что у нас одни признаки во временной области другие в частотной. |
|||
|
||||
| andreybs |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 7.12.2012 Репутация: нет Всего: нет |
MSE - расшифруйте, пожалуйста.
Допустим есть эталон {А;В}. Сравниваем его с {A1;X;B1}. Допустим A1=k*A, B1=k*B, X=(A1+B2)/2. Наблюдаем подобие с лин.коэф. k по амплитуде и лин.коэф. 3/2 по времени. Перебираем {0;A/A1}, {0;A/X}, {0;A/B1}, {1;B/X}, {1;B/B1}. A/A1 и B/B1 имеют одинаковый масштаб для точек 0 и 1, т.е. они "совпали".
Для сравнения по амплитуде-частоте, считаем корреляцию по {А;В} и сравниваем ее с {A1;X}, {X;B1}, {A1;X;B1}. Я правильно понял идею? Спасибо! |
||||
|
|||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |