Как обнаружить «быстрые» изменения в обработке сигналов

12

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

Моя система отбирает реальную стоимость каждые 10 миллисекунд, но ее можно настроить для более медленной выборки.

  1. Как я могу обнаружить это падение за 5000 миллисекунд?
  2. Что вы думаете о соотношении сигнал / шум? Должны ли мы сосредоточиться и попытаться получить лучший сигнал?
  3. Существует проблема, заключающаяся в том, что каждый показатель имеет разные результаты, и иногда падение даже меньше, чем в этом примере.

Образец сигнала Пример сигнала 2 Пример сигнала 3

Ссылка на файлы данных (они не совпадают с файлами, используемыми для графиков, но показывают последний статус системы)

  1. https://docs.google.com/open?id=0B3wRYK5WB4afV0NEMlZNRHJzVkk
  2. https://docs.google.com/open?id=0B3wRYK5WB4afZ3lIVzhubl9iV0E
  3. https://docs.google.com/open?id=0B3wRYK5WB4afUktnMmxfNHJsQmc
  4. https://docs.google.com/open?id=0B3wRYK5WB4afRmxVYjItQ09PbE0
  5. https://docs.google.com/open?id=0B3wRYK5WB4afU3RhYUxBQzNzVDQ
Petr
источник
5
Похоже, у вас относительно небольшое отношение сигнал / шум. Как и в случае большинства проблем с обнаружением, вы должны рассмотреть баланс между вероятностью правильного обнаружения указанной вами функции и вероятностью ложного объявления о наличии этой функции. Что важнее для вашего приложения? Есть ли у вас требования к задержке обнаружения?
Джейсон Р
2
«Шум» больше похож на помехи на определенной частоте. Если это так (спектральный график поможет), то соответствующая фильтрация выполнит большую часть работы.
Хуанчо
На самом деле обнаружение этой функции очень важно. Но я могу жить с некоторой задержкой, но мне нужно отрегулировать конечную позицию остановки, потому что я не знаю точно, где деталь касается припоя, и мне нужно контролировать глубину погружения. Так, например, если я знаю, что иммерсия должна быть 0,5 мм, я рассчитываю теоретическое положение в соответствии с идеальным размером шарика припоя, но затем мне нужно сделать поправку на фактический размер шарика, который я обнаруживаю на ощупь - он выглядит как изменить в силе.
Петр
Весь инструмент измерения расположен на пружинах, поэтому он может свободно перемещаться, но он также создает шум, и мы также установили пружины для всего диапазона измерений, и, конечно, эти проблемы возникают при использовании максимальной чувствительности, где измеренные силы ужасно небольшой.
Петр
Juancho - может быть, это могло бы помочь, но как я могу решить это для разных весовых частей, в результате чего разные частоты? Кроме того, этот компонент изменяется, когда деталь погружается в припой, потому что процесс смачивания снижает уровень шума, но это происходит только для более крупных деталей, здесь он практически одинаков при входе или выходе.
Петр

Ответы:

4

Я обычно называю эту проблему проблемой обнаружения склонов. Если вы вычисляете линейную регрессию для движущегося окна, проиллюстрированное падение будет видно как значительное изменение знака наклона и / или величины. Этот подход предлагает ряд факторов, которые потребуют «настройки»: например, частота дискретизации, размер окна и т. Д. Будут влиять на надежность (помехоустойчивость) детектора знака наклона. Здесь могут быть применены некоторые из приведенных выше комментариев. Любая фильтрация или подавление шума, которые могут быть применены до подгонки линии, улучшат ваши результаты.

Throwback1986
источник
2

Я сделал это, вычислив Т-статистику среднего значения левой части данных и правой части данных. Это предполагает, что вы знаете, где находится точка перехода, чего, конечно, нет.

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

u_left, u_right : mean of left and right portion
s_left, s_right : SD of left and right portion
n_left, n_right : number of samples on left and right (subtract one from each for the one degree of freedom)

se = sqrt(s_left^2 / n_left^2 + s_right^2 / n_right^2)
T = (u_left - u_right) / se

Вы можете сделать это как что-то вроде бинарного поиска. Попробуйте 10 точек данных, найдите две самые большие, затем попробуйте 10 точек между ними и т. Д. Таким образом, вы можете получить довольно точную точку перехода. Я не претендую на точность. :-)

Дайте нам знать, как это идет!

PS Вы можете вычислять среднее и sd как текущие суммы, что уменьшает сложность вычисления этой функции разбиения для каждой возможности от N ^ 2 до N. Делая это, вы, вероятно, можете позволить себе просто вычислить статистику T в каждой возможной точке разбиения.

MattD
источник