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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Выделение постоянной составляющей на фоне шума, Как сделать?
Guest_@Ark_*
сообщение Sep 26 2011, 12:35
Сообщение #16





Guests






Цитата
Я делал бы так же, как написал GetSmart в последнем сообщении в той теме, ссылку на которую выдал psL - сложил бы все выборки и поделил на их количество. По-моему, лучшей фильтрации в природе не существует...

Этот же алгоритм можно реализовать немного по-другому.
Складываются не абсолютные значения выборок, а их отклонения от среднего значения. Среднее, в данном случае - это постоянное значение для всего процесса суммирования до некоторого момента времени. Стартовое значение среднего можно выбрать произольно. Затем оно будет скорректировано в процессе.
Поскольку суммируются значения со знаком, то текущее значение суммы будет колебаться вблизи нулевого значения. Количество выборок при таком суммировании не нужно ограничивать, а сами значения выборок не нужно хранить. Пока значение суммы по модулю не выходит за заданные нами пределы, можно считать, что выбранное среднее значение соответствует реальному среднему с заданной точностью. Как только сумма превысит заданный предел (по модулю) - включается счетчик сэмплов. Если в течение заданного времени (заданного количества сэмплов) отклонение не вернулась в прежний диапазон - корректируем текущее среднее значение, обнуляем текущую сумму. И продолжаем суммирование, используя уже новое среднее...
Go to the top of the page
 
+Quote Post
анатолий
сообщение Sep 26 2011, 12:52
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 10-12-05
Из: Украина
Пользователь №: 12 052



Цитата(SPACUM @ Sep 25 2011, 16:39) *
Главное для каждой точки определить выброс это или нет и в случае выброса заменить ближайшим невыбросным значением.
Для этого достаточно знать приближенное значение измеряемой в настоящее время величины и дисперсию присутствующего в настоящее время шума.
Все значения за пределами трех сигм следует считать выбросами.
Ничего лучшего в голову не приходит.

Очень правильный алгоритм. Нельзя фильтровать усреднением, если не удалены импульсные помехи, кот. нужно считать промахами.
Тем более, если хочется такую высокую точность.
А промах - это не три, а четыре сигмы и более. И ближайшим значением заменять не нужно - просто - не учитывать.
Go to the top of the page
 
+Quote Post
xemul
сообщение Sep 26 2011, 13:07
Сообщение #18



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(R.A.K. @ Sep 26 2011, 16:22) *
Может в самой методе чего-то не так?

Может быть. Я, н-р, не понимаю, как при частоте выборок 1 Гц можно восстановить частоту сигнала 1 кГц. Или Вам достаточно "среднего по больнице" за тысячу периодов?
Если отвлечься от моих непоняток, то задача распадается на исключение из выборки отсчётов с неправильной динамикой (выбросов) и на расчёт собственно среднего значения выборки.
Если делать скользящее БПФ (ДПФ), то попадание выброса в его окно приведёт к появлению бинов в правой части спектра - имхо, вполне наглядный признак выброса. Что делать с таким отсчётом, думайте сами, но, вероятно, его стОит исключить из расчёта среднего значения.
Если Вас не устраивает "просто среднее значение" на выходе БПФ (ДПФ), придётся придумывать какую-нибудь более сложную модель, которая учитывает, н-р, предысторию или температуру, напряжение, фазу Луны... , т.к. для одного набора данных "просто среднее значение" будет совпадать со средним значением, посчитанным более другим образом.
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Sep 26 2011, 13:11
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(анатолий @ Sep 26 2011, 15:52) *
Очень правильный алгоритм. Нельзя фильтровать усреднением, если не удалены импульсные помехи, кот. нужно считать промахами.
Тем более, если хочется такую высокую точность.
А промах - это не три, а четыре сигмы и более. И ближайшим значением заменять не нужно - просто - не учитывать.

По-моему, лучший результат даст, все-таки, КИХ, только не скользящего среднего, а с нормально подобранным окном. Это снизит влияние и импульсных помех. Окно должно обеспечить затухание 80-90 дБ (это в случае, если предварительно из сигнала вычесть среднее для сброса разрядности до 16 бит, а то 160 дБ это многовато.
***
Можно несколько раз (5-6) повторить КИХ скользящего среднего, если это менее затратно, чтобы опустить уровень затухания до 80-90 дБ.

Сообщение отредактировал sup-sup - Sep 26 2011, 13:28
Go to the top of the page
 
+Quote Post
Tanya
сообщение Sep 26 2011, 13:52
Сообщение #20


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(sup-sup @ Sep 26 2011, 17:11) *
По-моему, лучший результат даст, все-таки, КИХ, только не скользящего среднего, а с нормально подобранным окном. Это снизит влияние и импульсных помех.

Зачем включать помехи в результат? Фильтр (можно разными словами называть) тут должен быть нелинейным. И фильтр (настоящий) тут совсем не нужен. Точки можно перетасовывать как угодно - результат, который ищет автор, от этого не зависит. И никакие вычислительные "сложности" автору не страшны - за час он все, что хочет, посчитает.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 26 2011, 14:08
Сообщение #21


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

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



Вернемся к медианному фильтру. Если из 3-х текущих отсчетов выбирать средний по величине, то выброс вверх, а за ним сразу вниз оба будут отброшены. Если выбросов больше, сделать фильтр длиннее, выбирать средний из 5-ти отсчетов. Мало? - из 7-ми...
Go to the top of the page
 
+Quote Post
R.A.K.
сообщение Sep 26 2011, 14:08
Сообщение #22


Участник
*

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180



Цитата(xemul @ Sep 26 2011, 17:07) *
Может быть. Я, н-р, не понимаю, как при частоте выборок 1 Гц можно восстановить частоту сигнала 1 кГц. Или Вам достаточно "среднего по больнице" за тысячу периодов?

Меряется время между соседними фронтами. Результаты 1000 измерений суммируются и выдаются в виде очередного "сэмпла".
Получается каждый сэмпл - среднее значение мгновенной частоты на интервале 1000 периодов.
Соответственно частота сэмплов ~ 1 Гц.
Если надо, объясню почему взял 1000, а не 1, 15, 538000 ...

Мысль про поликлинику не понял (но вы продолжайте развивать). Где и что направильно делаю?

Цитата(xemul @ Sep 26 2011, 17:07) *
Если Вас не устраивает "просто среднее значение" на выходе БПФ (ДПФ), придётся придумывать какую-нибудь более сложную модель, которая учитывает, н-р, предысторию или температуру, напряжение, фазу Луны... , т.к. для одного набора данных "просто среднее значение" будет совпадать со средним значением, посчитанным более другим образом.

Изголяетесь. Вечереет...
Дело не "устраивает/неустраивает". Сейчас я истинное значение частоты знаю. Я пытаюсь найти алгоритм, который бы в короткое время выдал близкий к истинному значению результат. Все методы, что пока перепробовал, не дают результат с нужной точностью.
Go to the top of the page
 
+Quote Post
sup-sup
сообщение Sep 26 2011, 14:23
Сообщение #23


Знающий
****

Группа: Участник
Сообщений: 674
Регистрация: 26-08-05
Пользователь №: 7 997



Цитата(R.A.K. @ Sep 26 2011, 17:08) *
Если надо, объясню почему взял 1000, а не 1, 15, 538000 ...

А почему, действительно, не взять '1'? Так можно было бы раз в мс просчитывать фильтр 1000 раз вместо одного сейчас. И результат был бы быстрее получен.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Sep 26 2011, 14:35
Сообщение #24


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(ViKo @ Sep 26 2011, 18:08) *
Вернемся к медианному фильтру. Если из 3-х текущих отсчетов выбирать средний по величине, то выброс вверх, а за ним сразу вниз оба будут отброшены. Если выбросов больше, сделать фильтр длиннее, выбирать средний из 5-ти отсчетов. Мало? - из 7-ми...

А Вы отсортируйте отсчеты, а потом фильтруйте.... Автору нужно получить константу ОДНУ на выходе.

Цитата(R.A.K. @ Sep 26 2011, 18:08) *
Дело не "устраивает/неустраивает". Сейчас я истинное значение частоты знаю. Я пытаюсь найти алгоритм, который бы в короткое время выдал близкий к истинному значению результат. Все методы, что пока перепробовал, не дают результат с нужной точностью.

Как вам везет - Вам ведома истина. Тогда посчитайте (Вы же и дисперсию знаете), сколько отсчетов (минимум) нужно для получения истины, лежащей внутри заданного интервала с заданной вероятностью.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 26 2011, 14:45
Сообщение #25


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

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



Цитата(Tanya @ Sep 26 2011, 17:35) *
А Вы отсортируйте отсчеты, а потом фильтруйте....

Зачем? Наоборот, это же здорово, что "палки" выскакивают изредка. Не обращать на них внимания и призван медианный фильтр.

Цитата(Tanya @ Sep 26 2011, 17:35) *
Автору нужно получить константу ОДНУ на выходе.

Так потом фильтром НЧ и получить ОДНУ. sm.gif

Цитата(sup-sup @ Sep 26 2011, 17:23) *
А почему, действительно, не взять '1'? Так можно было бы раз в мс просчитывать фильтр 1000 раз вместо одного сейчас. И результат был бы быстрее получен.

+1
Зачем так неэффективно обходиться с данными? Если, как видим, простое среднее значение не дает нужного результата, а нужны дополнительные меры, вроде медианного фильтра, то, конечно, лучше обрабатывать каждый отсчет.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Sep 26 2011, 14:46
Сообщение #26


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(ViKo @ Sep 26 2011, 18:38) *
Зачем? Наоборот, это же здорово, что "палки" выскакивают изредка. Не обращать на них внимания и призван медианный фильтр.


Если Вы отсортируете, то Ваш медианный фильтр не будет фильтровать Ваши "палки" с некоторой вероятностью. Результат должен быть инвариантен к перестановкам. Нет никакой последовательности - есть просто набор (выборка) данных. Так я понимаю... Поэтому - какие фильтры, фурье-преобразования....
Go to the top of the page
 
+Quote Post
R.A.K.
сообщение Sep 26 2011, 14:58
Сообщение #27


Участник
*

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180



Цитата(sup-sup @ Sep 26 2011, 18:23) *
А почему, действительно, не взять '1'? Так можно было бы раз в мс просчитывать фильтр 1000 раз вместо одного сейчас. И результат был бы быстрее получен.


Соображения были такие.
Допустим измеряется частота входного сигнала ("чистого", без шумов).
Измеряемая частота f0 (входной сигнал). Частота опорного генератора fизм. Интервал между N импульсами входного сигнала равен М импульсов опорного генератора.
Значит f0/N = fимз/(М +- 1).
Значит относительная погрешность измерения составит +-1/М.

Фактически это что-то типа выбора разрядности АЦП.

Попутно замечу, что существует такой метод (по крайней мере я о нем слышал sm.gif и подозреваю что ныне он не актуален), когда измеряется медленно-меняющийся сигнал путем наложения на него нормального шума с нулевым средним. В конечном счете это позволяет измерять полезный сигнал более точно, чем это позволяет разрядность АЦП.


Цитата(Tanya @ Sep 26 2011, 18:35) *
Как вам везет - Вам ведома истина.

Истина мне неведома. sm.gif

Цитата(Tanya @ Sep 26 2011, 18:35) *
Тогда посчитайте (Вы же и дисперсию знаете), сколько отсчетов (минимум) нужно для получения истины, лежащей внутри заданного интервала с заданной вероятностью.

Не понял sad.gif
Типа сколько кавалеристов в год будет убито копытом лошади? sm.gif


P.S. Попробовал обработать последовательность:
1) путем отбрасывания пиков
2) путем замены пиков соседним "более достоверным" значением.
Улучшения как бэ... есть в плане "грязи" выходного сигнала, но результат получается ниже ожидаемого. Ошибка короче получается.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 26 2011, 15:05
Сообщение #28


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

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



Цитата(Tanya @ Sep 26 2011, 17:46) *
Если Вы отсортируете, то Ваш медианный фильтр не будет фильтровать Ваши "палки" с некоторой вероятностью. Результат должен быть инвариантен к перестановкам.

Ничему ничто не должно. sm.gif Есть конкретная задача, которую надо решить.
А если я синус оцифрую, а потом перемешаю отсчеты, тоже должно потом фильтроваться, и БПФ частоту должно находить?

Цитата(R.A.K. @ Sep 26 2011, 17:58) *
Попутно замечу, что существует такой метод (по крайней мере я о нем слышал sm.gif и подозреваю что ныне он не актуален), когда измеряется медленно-меняющийся сигнал путем наложения на него нормального шума с нулевым средним. В конечном счете это позволяет измерять полезный сигнал более точно, чем это позволяет разрядность АЦП.

Называется "рандомизация". Был, есть и будет есть.
Go to the top of the page
 
+Quote Post
xemul
сообщение Sep 26 2011, 15:16
Сообщение #29



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(R.A.K. @ Sep 26 2011, 18:08) *
Меряется время между соседними фронтами. Результаты 1000 измерений суммируются и выдаются в виде очередного "сэмпла".
Получается каждый сэмпл - среднее значение мгновенной частоты на интервале 1000 периодов.
Соответственно частота сэмплов ~ 1 Гц.

Это-то я понял. Если по усреднению 1000 периодов получаются выбросы на 10^-4, значит из этой тысячи один крив на 10^-1. Или два - на 5*10-2. Или ...
Цитата
Мысль про поликлинику не понял (но вы продолжайте развивать). Где и что направильно делаю?

У Вас на входе уже нечто среднее из шумов, выбросов и полезного сигнала. Оно и было названо "средней температурой по больнице". Может быть есть возможность устранять выбросы ещё в первой тысяче?
Цитата
Изголяетесь. Вечереет...
Дело не "устраивает/неустраивает". Сейчас я истинное значение частоты знаю. Я пытаюсь найти алгоритм, который бы в короткое время выдал близкий к истинному значению результат. Все методы, что пока перепробовал, не дают результат с нужной точностью.

Да ни разу.
Переведу написанное в предыдущем посте. Арифметическое среднее (первый момент, мат. ожидание), как его не считай, будет одинаковым для одного и того же набора данных.
Если есть какая-либо дополнительная информация - о влияющих факторах вроде температуры или напряжения питания, или какие-то закономерности в поведении сигнала, - можно попробовать изобрести модель для интересующего параметра, учитывающую эту информацию.
В любом случае Ваш алгоритм, как уже неоднократно и многими говорилось, должен в первую очередь устранять выбросы.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Sep 26 2011, 15:26
Сообщение #30


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(ViKo @ Sep 26 2011, 19:05) *
Ничему ничто не должно. sm.gif Есть конкретная задача, которую надо решить.
А если я синус оцифрую, а потом перемешаю отсчеты, тоже должно потом фильтроваться, и БПФ частоту должно находить?

Пустые слова какие-то. Задача, которую.... Нет там синуса, нет никакой функции ни от чего. Есть набор чисел. Нужно его статистически обработать. И результат должен быть инвариантен по отношению к перестановкам. Иначе мы не решим конкретную задачу, которую нужно решить.

Цитата(ViKo @ Sep 26 2011, 19:05) *
Называется "рандомизация". Был, есть и будет есть.

Рандомизация, говорите... Если добавить к "сигналу" шум, уменьшим ли мы дисперсию? Эта ария из другой оперы. Информационный шум.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:51
Рейтинг@Mail.ru


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