2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Отличить сигнал от шума
Сообщение15.10.2009, 16:18 


08/10/09
10
Приветствую всех.Снова нужна ваша помощь.Суть : каждую секунду получаем данные от самолёта , допустим о его рулях высоты , на сколько отклонены, они соответственно к нам приходят с каким-нить шумом ( помехами),допустим руль отколонён на 12 градусов больше минуты , а у нас каждую секунду приходят данные 12.05, 12.01, 12.03, 12.05, 12, дальше допустим спустя минуту , рули меняют своё положение , и теперь их наклон равен 43, но опять же с небольшими шумами каждую минуту. Вопрос таков, если построить график , то получается , что идет почти прямая , потом резкий скачёк, и допустим после этого скачка идёт опять , почти , прямая.Но может быть и случай, когда в точности на столько же может прыгнуть и шум ,правда скорее всего он будет гораздо кратковременен.Но суть такая , как отличить сигнал от шума?Есть правда одна идея, допустим по оси у отложить 3 сигмы вверх и вниз, мол если все укладывается с течением времени в этот интервал , то это сигнал , пускай останется с небольшим шумом, но вот происходит скачёк и теперь нам нужно понять , шум прыгнул или реально поменялся сигнал.первое предположение взять допустим интервал 3 секунды , если в течении 3 секунд график не опустится обратно вниз, то мы считаем что это сигнал а не шум.Но как мне было сказано преподавателем , вроде бы и можно применить, но нужна ещ какая-нить идея.Как он предположил основываясь на теореме Котельникава (вроде),про отношение сигнал/шум. Нужно это для диплома, кто что-нить представляет, помогите :)))) Заранее спасибо :)

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение15.10.2009, 17:39 
Заслуженный участник


09/08/09
3438
С.Петербург
Обычно в таких случаях применяют какой-нибудь метод фильтрации высокочастотного шума. В простейшем варианте можно просто сгладить исходную кривую методом скользящего среднего.
Выбор конкретного метода фильтрации и его параметров зависит от параметров шума, соотношения сигнал/шум и от того, для каких целей Вы собираетесь использовать отфильтрованные данные.

Сигмы Вам тут вряд ли помогут - их надо считать для каждого горизонтального участка отдельно, а, насколько я понял, выделение этих горизонтальных участков и есть основная задача.

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение15.10.2009, 18:03 


08/10/09
10
по сути вещей, у меня есть разброс точек, на них нужно построить кусочно-линейную функцию, а вот точки разрыва нужно определить не на глаз (хотя в данном случае именно так и определяются) .Смысл задачи , чтобы не найти точку разрыва, но этойточкой не оказался шум.Т.е. например происходит подскок точек выше или ниже первоначального, но по сути это может быть как шум , так иизменение данных , которые мы получаем. Теперь суть , как отделить-то шум или нет :)

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение15.10.2009, 18:35 
Заслуженный участник


09/08/09
3438
С.Петербург
Можно попробовать сгладить, продифференцировать и снова сгладить.
По идее, скачки должны быть в точках экстремума сглаженной производной.
Ну а параметры сглаживания надо по экспериментальным данным подбирать.

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение16.10.2009, 10:12 


08/10/09
10
А ещё у кого-нить какие идеи будут? :)

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение16.10.2009, 10:55 
Аватара пользователя


27/01/09
814
Уфа
Никак, у датчика должна быть свой спектр, у помех свой спектр, непересекающийся спектр - фильтруется, пересекающийся никак, но уровень помех даёт нам соотношение сигнал-шум канала (насколько я понял, электромеханический), т.е. показания датчика верны с погрешностью, допустим в 1 %, т.е. сотые будут в погрешности. Можно убрать шум в канале помехоустойчивым кодированием сигналов датчика (или применить механическую передачу, т.е. использовать канал где нет помех). Электрический шум вообще-то специфический, гармоники сети питания и оборудования, их можно отфильтровать и из полезного сигнала. Ещё можно привлечь дополнительную информацию из других датчиков. Ещё можно применить дифференциальную передачу, т.е. парралельно измерять шум в канале и вычитать его из сигнала. Ещё можно применить модуляцию сигнала, преобразовывать спектр сигнала с целью уменьшения соотношения сигнал/шум, т.е. перередавать на другой частоте, на двух частотах, но в любом случае надо пытаться разделить спектр сигнала и помехи, и пытаться получить информацию о шуме, дополнительную информацию или передавать избыточную информацию. Почитайте книжку Бернард Скляр "Цифровая связь", в сети есть.

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение16.10.2009, 13:37 


08/10/09
10
Спасибо за советы :) Опишу чуть подробнее смысл.В общем то что я говорил про графики, допустим нет графика.Теперь у нас есть данные , которые поступают каждую секунду, допустим те же самые.Но отличие: теперь нам нужно не самим , а грубо говоря , чтобы программа понимала , где сделать точку разрыва , для линейно-кусочной функции.Т.е. где будет скачёк, в котором поменяется условие для следующего интервала данных.Самое главное , чтобы программа смогла понять , что этот скачёк-не шум, а именно смена положения рулей высоты ( например)или допустим , что у нас рули сначала повернуты на те же 12 градусов , и в определенный момент поворачиваются на -20, теперь мы что имеем, при 12 градусах присутствует шум , соответственно на протяжении допустим 10 минут у нас в аднных отображается не ровно 12 градусов , а +/- 0.3, т.е.на последней секунде положения рулей на 12 градусов нам пришли данные , допустим, 12.3 , а в следующую секунду у нас рули повернулись на -20 , но там тоже тот же шум и допустим нам пришли данные не -20, а -19.7 , т.е. у нас уже появляется и погрешность самой функции , которой мы апроксимируем эти данные.Но кроме этого , у нас же может получиться , что при изменении положения , появился ещё шумок какой-нить или просто совпало так , что другой , но тоже шум , и что мы имеем , что при изменении положения рулей , у нас к -20 прибавился шум , и допустим в первые секунды при положении руля в -20 , у нас получилось -30 ( может и не возможно . но всё-таки) , и шум этот на следующей секунде резко не упал до почти -20. А мы например накладываем условие , что шум не божет быть таким большим свыше 3 секунд , а допустим , шум стал совсем маленьким , в пределах +/-3 только после 10-ой секунды , что мы тогда имеем? А имеем то , что программа распознает этот скачёк не как шум , а как реальное положение руля :( А нам бы этого ой как не хотелось. Вооо , вроде щас что-то подобное описал :))) Вот как нам избежать всего этого. Или просто идёт полёт , рули на 12 градусах и тут опа , шм опять большой допустим подскочил он , и держится опять же те же 10 секунд , может и меньше , а может и больше, но суть одна , что у нас условие стоит , пусть 2 секунды или 3 или 5 , ( условие означает . чтоесли в течении этого времени вс вернулось на место , то это шум), а наш шум был больше того времени . которое является условием , иопять же тогда получится , что программа поймт , что это не шум . а что как-будто реально менялось положение рулей :( Вот какие тогда наложить условия , чтобы избавиться от всех этих подобных вещей :)а то получается 10 минут-полёт нормальный , рули 12 градусов , следующие 10 минут тоже самое , а где-то в то время проскочил шум , который у нас распознался как изменение положения рулей , хотя его не было и функция поменялась , появилась точка разрыва в тот момент , когда произошёл подскок и функция стала кусочно-линейной с точкой разрыва , которой на самом деле не было :)

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение16.10.2009, 14:40 
Аватара пользователя


27/01/09
814
Уфа
sev19 писал(а):
Опишу чуть подробнее смысл.В общем то что я говорил про графики, допустим нет графика.Теперь у нас есть данные , которые поступают каждую секунду, допустим те же самые.Но отличие: теперь нам нужно не самим , а грубо говоря , чтобы программа понимала , где сделать точку разрыва , для линейно-кусочной функции.
Ничего не понял, лучше напишите техническое задание. Если вам нужно написать какие-то экспертные условия, то пишите "if ... then ... else" какие считаете нужные, но получите виртуальное положение руля. Если система положения рулём уже существует, то вам можно просто индицировать расхождение и программа будет советовать шум это или расхождение положения с установкой.

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение16.10.2009, 15:46 


21/03/06
1545
Москва
Фильтр экспоненциального сользящего среднего Вам да поможет! Вот волшебная формула его:
$y_n = y_{n-1} + \frac{x_n-y_{n-1}}{k}$, где $k = 1...\infty$, типичное значение - 10...1000. Чем больше магическая константа k, тем медленнее фильтр реагирует на изменение (больше постоянная времени), зато лучше сглаживает.

А дальше уже простые условия if...then...else для введения гистерезиса и о чудо - мы смогли отследить "скачок" измеряемой величины.

Фильтр вносит задержку, зависящую от k, в случае же периодического сигнла изменяется фаза и амплитуда сигнала (но закономерности можно прикинуть, и даже вычислить аналитически).

-- Пт окт 16, 2009 16:49:04 --

P.S. А почему тема не в Computer science?

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение16.10.2009, 15:54 
Заслуженный участник


09/08/09
3438
С.Петербург
Если ничего не известно про характеристики шума (частота и амплитуда), вряд ли что-нибудь полезное посоветовать можно. Например, в случае
Код:
12, 12, 12, 12, 20, 12, 20, 12, 20, 20 20
и человек-то ничего разумного про момент изменения положения рулей сказать не сможет.

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение19.10.2009, 10:06 
Аватара пользователя


27/01/09
814
Уфа
Maslov писал(а):
Если ничего не известно про характеристики шума (частота и амплитуда), вряд ли что-нибудь полезное посоветовать можно.
Что-то можно сказать, т.к. положение механизации должно соответствовать положению ручек управления и установками системы управления. Но вот когда надо отследить положение рулей во время управления (например при настройке) или влияние действующих на управляющие поверхности сил, то тогда действительно нужна информация о динамике исполняющих огранов и механизации, и о параметрах шума на борту. И нужна математическая модель в пространстве состояний, чтобы видеть откуда нужна информация.
e2e4 писал(а):
Фильтр вносит задержку, зависящую от k
Чтобы выбрать магическую k фильтра, надо всё это знать, но т.к. обычно это всё уже давно известно, то специалист може сразу сказать какие частоты следует отсечь. Но есть ещё нюанс: у разностных схем есть свой собственныё переходной процесс.

Ещё в дипломе обзательно должно быть: использование интеллектуального датчика и фильтрации шума гибридным нейро-нечётким кристаллом встроенным в экспертную систему с помощью нанотехнологий и фрактальных вейвелет преобразований с числами Фибоначчи. Но ни в коем случае нельзя говорить, что сигнал прыгнул. :)

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение21.10.2009, 17:15 


08/10/09
10
Иными словами задача состоит в следующем. Нам необходимо построить кусочно-линейную регрессионную модель сигнала. Строить данную модель необходимо реккурентно, то есть по мере поступления измерительной информации. Очевидно, что при изменении положения руля высоты параметры модели будут существенно изменяться (это будет уже другой "участок " кусочно -линейной функции с другими коэффициентами регрессионной модели). Так вот, нам необходимо принять решение о том, что мы переходим на этот "другой участок" и теперь должны искать оценки коэффициентов регрессии уже для другого "куска" кусочно линейной функции.

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение21.10.2009, 17:50 
Заслуженный участник


09/08/09
3438
С.Петербург
sev19 в сообщении #253686 писал(а):
Так вот, нам необходимо принять решение о том, что мы переходим на этот "другой участок" и теперь должны искать оценки коэффициентов регрессии уже для другого "куска" кусочно линейной функции.
Если в такой постановке, то можно и через сигмы попробовать (или через какой-нибудь другой критерий отклонения сигнала от текущей линии регрессии).
Например, если сигнал в течение некоторого времени отклоняется от текущей линии регрессии более чем на 3 сигмы, заканчиваем текущий линейный участок и начинаем следующий.
При этом точки, соответствующие переходному процессу, лучше не учитывать при построении регрессии.

 Профиль  
                  
 
 Re: Отличить сигнал от шума
Сообщение22.10.2009, 10:04 
Аватара пользователя


27/01/09
814
Уфа
sev19 в сообщении #253686 писал(а):
Нам необходимо построить кусочно-линейную регрессионную модель сигнала. Строить данную модель необходимо реккурентно, то есть по мере поступления измерительной информации.
Тогда надо искать реализацию рекуррентного алгоритма кусочно-линейной регрессии в статистических пакетах или спросить у математиков. А руль высоты тут для красоты? Когда он изменяет своё положение мы знаем, т.е. сами им управляем, а вот уровень помех может изменяться и независимо от изменения положения руля высоты. И сигнал, модель которого мы строим тоже надо моделировать я думаю? Насколько я помню при применении спектрального фильтра и метода наименьших квадратов результат одинаковый должен получиться, если не путаю.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Модераторы: Модераторы, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group