реклама на сайте
подробности

 
 
> Фильтрация входного сигнала.
Xtal1
сообщение Jan 30 2014, 13:18
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 8-01-13
Пользователь №: 75 101



Всем доброго времени суток.
Прошу прощения, если не в тот раздел, но более подходящего не нашел.

Проблема заключается в следующем:
Есть поток входных значений, для примера даю выборку из 1000 отсчетов

Прикрепленный файл  sampling.rar ( 9.22 килобайт ) Кол-во скачиваний: 164


Нужно фильтровать такой поток значений, дабы получить "болтанку" на выходе не более 2-3 единиц по амплитуде. Тупым усреднением этого получается достичь лишь при количестве усредняемых значений близкому к 1000.
Можно ли добиться подобного результата с помощью каких-то более серьезных алгоритмов фильтрации и получить при этом время отклика фильтра хотя бы 200-400 сэмплов.
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 14)
Rst7
сообщение Jan 30 2014, 13:33
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Moderator: Есть же раздел "Алгоритмы ЦОС". Тему перенес.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jan 30 2014, 13:53
Сообщение #3





Guests






Сигнал вроде без явного тренда.
Вычисляем скользящее среднее и после первых N начинаем отсекать выбросы ( по уровню или по медиане ).
Продолжаем вычислять ск. среднее с учетом отбраковки.
Длина окна среднего может быть или постоянной или вообще нарастающей.
Это, если примитивно.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 30 2014, 14:00
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



По-моему, круче усреднения ничего быть не может. Когда каждая выборка участвует в фильтрации с максимальным весом (1).
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jan 30 2014, 14:03
Сообщение #5





Guests






Это - даsm.gif
Но там есть явные выбросы, которые стоит отсекать до усреднения, т.е. сигнал остоит из некоего медленного тренда и редких импульсных помех.
Вывод чисто зрительно-телепатический.
К примеру, имп. помехи статистически смещены в положительную полуплоскость - это даст смещение полезного сигнала туда же.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 30 2014, 14:05
Сообщение #6


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(TSerg @ Jan 30 2014, 17:03) *
Это - даsm.gif
Но там есть явные выбросы, которые стоит отсекать до усреднения, т.е. сигнал остоит из некоего медленного тренда и редких импульсных помех.
Вывод чисто зрительно-телепатический.

А-а. Я не смотрел. Тогда сначала нужно запустить медианный фильтр.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jan 30 2014, 14:08
Сообщение #7





Guests






О чем и речь была, либо отсечка по уровню каждого отсчета (если уровень имп. помех заметно отстоит от уровня сигнала), если не желательно окно для медианы.
Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 30 2014, 14:49
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(Xtal1 @ Jan 30 2014, 16:18) *
Всем доброго времени суток.
Прошу прощения, если не в тот раздел, но более подходящего не нашел.

Проблема заключается в следующем:
Есть поток входных значений, для примера даю выборку из 1000 отсчетов

Прикрепленный файл  sampling.rar ( 9.22 килобайт ) Кол-во скачиваний: 164


Нужно фильтровать такой поток значений, дабы получить "болтанку" на выходе не более 2-3 единиц по амплитуде. Тупым усреднением этого получается достичь лишь при количестве усредняемых значений близкому к 1000.
Можно ли добиться подобного результата с помощью каких-то более серьезных алгоритмов фильтрации и получить при этом время отклика фильтра хотя бы 200-400 сэмплов.



Мощность шума в вашем примере ~300. Вам нужна ~1. Т е фильтром вам надо ограничить полосу в 300 раз, те фильтр будет с откликом минимум 600 отсчетов.
Медианная фильтрация и др нелинейщина применима в случае сглаживания, но не в случае оценки среднего значения.
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Jan 30 2014, 15:59
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961



QUOTE (ViKo @ Jan 30 2014, 17:05) *
сначала нужно запустить медианный фильтр
Если допустимы гипотезы, то я думаю, что это дробовой шум аналого-цифрового преобразователя, при постоянном входном сигнале.

Медиана с апертурой 15 выборок уменьшает разброс до 3-4, апертура в 27 выборок - до 1.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jan 30 2014, 16:07
Сообщение #10





Guests






Частотный анализ все показывает верно - допустима отсечка по уровню.
Чистая медиана (т.е только медиана) при отсутствии импульсных помех приведет к искажениям полезного сигнала.

Гистограмма исходного сигнала за вычетом среднего с учетом помех:
Прикрепленное изображение


Отсечка помех по уровню (взят abs(20)) и центрирование остатка приводят к картине маслом:
Прикрепленное изображение


С таким сигналом легко справится скользящее среднее.
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Jan 30 2014, 16:34
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961



QUOTE (TSerg @ Jan 30 2014, 19:07) *
Чистая медиана (т.е только медиана) при отсутствии импульсных помех приведет к искажениям полезного сигнала.
Если не интерпретировать эту гистограмму как три или бимодальное распределение, то медиана даст быструю и наилучшую оценку. Для симметричных шумов медиана даёт несмещённую оценку. А помехи как раз импульсные, просто их относительно много...

(P.S. однако видно, что шум не симметричный и выборочное среднее 36636, а медиана даёт 36634. Но это мелочь, по сравнению со скоростью медианы - 15 выборок длина и шума нет sm.gif

Сообщение отредактировал AndrewN - Jan 30 2014, 16:44
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jan 30 2014, 16:51
Сообщение #12





Guests






Это все понятно, но медиана без помех введет нелинейность в сигнал и его оценку, да и ТС сильно беспокоился по поводу 2 дискрет точности выходного сигнала.

P.S.
>однако видно, что шум не симметричный
На крайней картинке надо считать это уже не шумом, а сигналом и поэтому - медиана внесет нелинейность.

P.P.S
Для реккурентного SMA ( скользящее среднее ) вообще выборка только однаsm.gif
SMA[i] = SMA[i-1] + (X[i] - X[i-n])/n
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Jan 30 2014, 18:50
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961



QUOTE (TSerg @ Jan 30 2014, 20:51) *
ТС сильно беспокоился по поводу 2 дискрет точности выходного сигнала.
На графике измеренного сигнала видно, что максимальные отклонения равны около 40 в обе стороны, т.е. чуть больше 5 младших бит могут врать, о +/-2 голова может не болеть.

Я поменял окно медианы на 9, даже такое короткое хорошо давит эти +/-40. На мой взгляд (поскольку истинное значение нам никогда не узнать, и приходится довольствоваться оценкой) - задача решена.

P.S. А это была хорошая идея про +/-40. Предположив, что 5 и 3 биты сбоят (40 = 0х28 = 10 1000) почти всегда наоборот, я прибавлял или вычитал 40 из выпадающих значений:
CODE
        if (x[k] < 36629)
            res = x[k] + 40;
        else if (x[k] > 36640)
            res = x[k] - 40;
        else
            res = x[k];
Результат превзошёл все ожидания. Убедитесь сами. Похоже, что эти биты и в правду сбоят!

Сообщение отредактировал AndrewN - Jan 30 2014, 19:18
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jan 30 2014, 19:17
Сообщение #14





Guests






Это разве задача? sm.gif
Интереснее на ней рассмотреть предельные возможности разных методов.
Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 30 2014, 19:19
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(AndrewN @ Jan 30 2014, 21:50) *
На графике измеренного сигнала видно, что максимальные отклонения равны около 40 в обе стороны, т.е. чуть больше 5 младших бит могут врать, о +/-2 голова может не болеть.

Я поменял окно медианы на 9, даже такое короткое хорошо давит эти +/-40. На мой взгляд (поскольку истинное значение нам никогда не узнать, и приходится довольствоваться оценкой) - задача решена.

- vale.


Вы придумали собственную задачу и бодро взялись ее решать (не решив, кстати говоря). Между тем с вопросом тс можно ознакомиться в 1 посте.
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 00:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01475 секунд с 7
ELECTRONIX ©2004-2016