Находит местоположение сигнала с помощью поиска по сходству.
Библиотека
EngeeDSP
Синтаксис
Вызов функции
istart, istop, dist = findsignal(data, signal) —
возвращает начальный и конечный индексы сегмента массива данных data, который наилучшим образом соответствует массиву поиска signal. Наилучшим соответствием считается сегмент, для которого квадрат евклидова расстояния между сегментом и массивом поиска dist является наименьшим. Если data и signal — матрицы, то findsignal находит начальный и конечный столбцы массива data, которая наилучшим образом соответствует signal. В этом случае data и signal должны иметь одинаковое количество строк.
istart, istop, dist = findsignal(data, signal, Name,Value) —
использует дополнительные параметры, заданные одним или несколькими аргументами Name,Value. Параметры включают в себя применяемую нормализацию, количество сегментов для отчета и используемую метрику расстояния.
Укажите необязательные пары аргументов в формате Name, Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов, но порядок пар не имеет значения.
Используйте запятые для разделения имени и значения, а Name заключите в кавычки.
Длина нормализации, заданная как целочисленный скаляр. Это значение представляет собой минимальное количество отсчетов, по которым нормализуется каждый отсчет как в данных, так и в сигнале. Если сигнал представляет собой матрицу, то NormalizationLength представляет собой количество столбцов.
Типы данных
Float32, Float64
#MaxDistance —
максимальное расстояние
Inf (по умолчанию) | скаляр
Details
Максимальное расстояние сегмента, заданное как положительный вещественный скаляр. Если указано MaxDistance, то findsignal возвращает начальный и конечный индексы всех сегментов data, расстояния которых от signal являются локальными минимумами и меньше MaxDistance.
Типы данных
Float32, Float64
#MaxNumSegments —
максимальное количество возвращаемых сегментов
1 (по умолчанию) | скаляр
Details
Максимальное количество возвращаемых сегментов, заданное как положительный целочисленный скаляр. Если указано MaxNumSegments, то findsignal находит все сегменты data, расстояния которых от signal являются локальными минимумами, и возвращает до MaxNumSegments сегментов с наименьшими расстояниями.
Типы данных
Float32, Float64
#TimeAlignment —
метод выравнивания по времени
"fixed" (по умолчанию) | "dtw"
Details
Метод выравнивания по времени:
"fixed" — не растягивать и не повторять отсчеты для минимизации расстояния;
"dtw" — попытка сократить расстояние путем растяжения временной оси и повторения отсчетов либо в данных, либо в сигнале.
Метрика расстояния, заданная как одно из значений: "squared", "absolute", "euclidean" или "symmkl". Если и являются -мерными сигналами, то метрика задает — расстояние между -м отсчетом и -м отсчетом .
"squared" — квадрат евклидовой метрики, состоящий из суммы квадратов разностей:
"euclidean" — корень из суммы квадратов разностей, также известный как евклидова метрика или :
"absolute" — сумма абсолютных разностей, также известная как расстояние городских кварталов, метрика Манхэттена, метрика такси или :
"symmkl" — симметричная метрика Кульбака—Лейблера. Эта метрика верна только для вещественных и положительных и :
Начальный и конечный индексы сегмента, возвращаемые в виде целочисленного скаляра или вектора.
#dist —
минимальное расстояние между данными и сигналом
скаляр | вектор
Details
Минимальное расстояние между данными и сигналом, возвращаемое в виде скаляра или вектора.
Примеры
Нахождение сигнала в данных
Details
Сгенерируем набор данных, состоящий из гауссова импульса частотой 5 Гц с полосой пропускания 50%, дискретизированного в течение половины секунды с частотой 1 кГц. Создадим сигнал, состоящий из полутора периодов синусоиды частотой 10 Гц. Построим графики набора данных и сигнала.
Добавим в набор данных два явно выпадающих участка. Найдем сегмент, который находится ближе всего к сигналу (с точки зрения наименьшего абсолютного расстояния). Построим график данных и выделим этот сегмент.