Алгоритм для преобразования сигнала продолжения в двоичный

#algorithm #statistics #quantization

#алгоритм #Статистика #квантование

Вопрос:

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

У меня есть данные от животного, которое движется дискретным образом. Он перемещается на несколько кадров, а затем останавливается на несколько кадров и продолжает движение.

У меня есть расстояния между каждым последовательным кадром кончика хвоста животного. Например, если у нас было 5 кадров, у меня есть список длиной 4, первое значение — это евклидово расстояние между концом его хвоста в первом кадре до кончика хвоста во втором кадре, второе значение — это расстояние между вторым кадром и третьим кадром и так далее..

Я считаю, что когда животное движется, расстояние больше, чем оно остается на месте (собака не виляет хвостом), и у меня есть предположение, что движение и интервал между схватками длиннее, чем один кадр. Единицы перемещения, конечно, не имеют значения.

Учитывая этот сигнал, я хочу сказать, в каких кадрах двигалось животное. Давайте рассмотрим график, например: введите описание изображения здесь

Моей первой попыткой было использовать фильтр Гаусса, это выглядело бы примерно так: введите описание изображения здесь

Теперь может сработать использование медианы в качестве порога, но, похоже, это может привести к некоторым неправильным решениям, например, последние 2 сеанса могут быть разделены, а могут и не быть. Глядя на исходный график, я думаю, что они разделены. Я не уверен, что этот метод дает наилучшие результаты.

Что вы думаете? есть идеи? Извините за мой английский.. Я считаю, что предложение об исправлении поступит сразу 🙂

Комментарии:

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

2. Мне любопытно узнать об алгоритмах, которые преобразуют непрерывный сигнал в двоичный сигнал. Не принимайте историю слишком близко к сердцу.. За каждым написанием программы стоит история

3. Это интересная проблема, но поскольку она требует обсуждения, она не подходит для SO. Попробуйте stats.stackexchange.com или dsp.stackexchange.com . Эта проблема на самом деле очень сложна; сегментация и обнаружение движения, которые наш мозг выполняет автоматически, довольно сложны и их трудно автоматизировать. Удачи и получайте удовольствие.

4. Также имейте в виду, что «лучший» способ квантования непрерывного сигнала полностью зависит от цели, для которой вам нужно его использовать, поэтому, когда вы публикуете свой вопрос на другом форуме, обязательно объясните, с какой целью вы пытаетесь это сделать.

5. Спасибо! У меня такое же ощущение, что наш мозг работает автоматически, но для них сложно установить математические правила. Это заставляет меня думать, что, возможно, машинное обучение подойдет ему лучше всего. Но для этого мне нужны данные 🙂

Ответ №1:

Вы можете сгладить данные с помощью ядра Гаусса. Чтобы сделать проблему двоичной, вы можете установить пороговое значение исправления, например, 7.5. Затем двоичному вектору присваивается «1» всякий раз, когда значения в сглаженном векторе превышают пороговое значение, иначе значение равно 0.

Комментарии:

1. Фиксированный порог не является хорошим решением, он не будет переходить между разными сигналами. Я предложил установить медиану в качестве порога, и это все еще кажется недостаточно умным