|
|
  |
сигнал/шум |
|
|
|
Jul 11 2007, 14:37
|

Brubel
  
Группа: Свой
Сообщений: 321
Регистрация: 17-11-06
Из: Oudergem
Пользователь №: 22 444

|
Можно брать сользящее среднее, тогда новое значение будет появлятся с каждым новым измерением, а не раз в 10 (количество циклов усреднения). То есть есть массив, в который записали 10 значений вычислили среднее, затем первое значение убрали, сдвинули на 1 и измерили еще раз, подсчитали заново среднее. Толко нужно такой код, чтоб не делал каждый раз суммирование этой 10, а от суммы отнимал 1-е значение, и прибавлял новое. Медианное усреднение делается по нечетному количеству точек усреднения. В нем все полученные значения выстраиваются в порядке возрастания (убывания) и за среднее значение принимается величина которая "упала" в среднюю ячейку. Для 3х измерений это будет 2 ячейка для 5 - 3 7 - 4 9 - 5 11 - 6 и тд
|
|
|
|
|
Jul 12 2007, 08:41
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Евгений Германович @ Jul 11 2007, 17:50)  Подскажите,как повысить отношение сигнал шум.Есть 24 разрядный код с сигма-дельта АЦП.Частота квантования 10Гц.Сигнал постоянка.Внутренний фильр АЦП с частотой среза 3Гц.Простое усреднение 10 измерений дает результат,но желательно что-нибуть получше.И если не затруднит,разъясните,что такое медианный фильтр Нет никаких универсальных, "магических", самых лучших, "философских " фильтров в общем случае... Для выбора правильного алгоритма нужна априорная информация о конкретных сигнале, шуме, помехах... Например, медианная фильтрация убирает редкие случайные помехи (выбросы), но если их нет, то результат может быть хуже, чем при обычном усреднении... Надо смотреть распределение... И думать... Это банально? Да...
|
|
|
|
|
Jul 12 2007, 14:05
|

Профессионал
    
Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654

|
Цитата(Tanya @ Jul 12 2007, 11:41)  Нет никаких универсальных, "магических", самых лучших, "философских " фильтров в общем случае... Для выбора правильного алгоритма нужна априорная информация о конкретных сигнале, шуме, помехах... Например, медианная фильтрация убирает редкие случайные помехи (выбросы), но если их нет, то результат может быть хуже, чем при обычном усреднении... Надо смотреть распределение... И думать... Это банально? Да... Сигнал- постоянный ток.Напряжение от 2 вольт до 200мкВ.Шумы-все что только возможно.Полоса частот будет ограничена 2-3Гц.Проблема в том,что очень желательно раз в секунду выдавать результат.
|
|
|
|
|
Jul 16 2007, 17:33
|
Гуру
     
Группа: Свой
Сообщений: 2 932
Регистрация: 13-10-06
Из: Уфа
Пользователь №: 21 290

|
Цитата(Tanya @ Jul 12 2007, 14:41)  Нет никаких универсальных, "магических", самых лучших, "философских " фильтров в общем случае... Для выбора правильного алгоритма нужна априорная информация о конкретных сигнале, шуме, помехах... Например, медианная фильтрация убирает редкие случайные помехи (выбросы), но если их нет, то результат может быть хуже, чем при обычном усреднении... Надо смотреть распределение... И думать... Это банально? Да... Именно так...Может, мы договоримся не рассматривать далее вопросы вроде "....измерение напряжения с точностью до 10 минус 6 или до 24 бит..."? Нет способов восстановить потерянную информацию.
--------------------
"...Дьяволу ведомо многое не потому, что он- Дьявол, а потому, что он стар..."
|
|
|
|
|
Jul 18 2007, 12:42
|

Профессионал
    
Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654

|
Цитата(Designer56 @ Jul 16 2007, 20:33)  Именно так...Может, мы договоримся не рассматривать далее вопросы вроде "....измерение напряжения с точностью до 10 минус 6 или до 24 бит..."? Нет способов восстановить потерянную информацию. Я не могу понять,что вызвало ваш гнев.Какие вам нужны данные,что бы я смог припасть к сверкающему фонтану ваших мыслей.Я никоим образом не ставил вопрос об измерении напряжения с точностью до чего-нибудь.И никоим образом не собирался восстанавливать потерянную информацию ибо мне не надо ее никуда передавать.Кстати о восстановлении существуют специальные коды позволяющие воссанавливать информацию.Например код Хеминга(возожно с двумя м).Получение информации о помехе-требование вполне логичное ,но абсолютно невыполнимое,индустриальная помеха -это весьма вредное явление к тому же абсолютно случайное.Все попытки создать математическую модель индустриальной помехи ни к чему не привели.Все остальные шумы это стандартный набор разноцветных шумов,которые весьма успешно генерит вся электроника + шумы квантования АЦП.И в самой постановке вопроса нет ничего необычного.С подобной проблемой сталкиваются все кто меряет,любым способом,малые величины.И что вы имеете против микровольта.У вас с этим словом связаны неприятные воспоминания,но поверьте я здесь совершенно нипричем.Кстати иногда приходится мерять и нановольты и что?
|
|
|
|
|
Oct 5 2007, 13:05
|

Профессионал
    
Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654

|
В ссылке http://www.may.nnov.ru/mak/DSP/Contents.shtmlна фильтр Баттерворта 2 порядка приведены коэффициенты Таблица коэффициентов № A B 0 --- 0.020083365564 1 -1.5610180758 0.040166731128 2 0.64135153806 0.020083365564 У меня есть несколько вопросов:1 коэфф 1.56 -это не ошибка? 2 Диапазон представления Х от 0 до 1/ 1.56.. я правильно понимаю? Если не затруднит просветите.
|
|
|
|
|
Oct 5 2007, 16:21
|
Местный
  
Группа: Свой
Сообщений: 289
Регистрация: 17-06-07
Пользователь №: 28 498

|
Цитата(Евгений Германович @ Oct 5 2007, 15:05)  В ссылке http://www.may.nnov.ru/mak/DSP/Contents.shtmlна фильтр Баттерворта 2 порядка приведены коэффициенты Таблица коэффициентов № A B 0 --- 0.020083365564 1 -1.5610180758 0.040166731128 2 0.64135153806 0.020083365564 У меня есть несколько вопросов:1 коэфф 1.56 -это не ошибка? 2 Диапазон представления Х от 0 до 1/ 1.56.. я правильно понимаю? Если не затруднит просветите. Коэффициент А1 для указанной формулы со знаком минус (-1.5610180758), это важно. Еще важно: эти коэффициенты рассчитаны для частоты среза, в 10 меньшей частоты Найквиста. На ошибку не похоже. Диапазон возможных Х не ограничивается.
|
|
|
|
|
Oct 6 2007, 12:25
|
Местный
  
Группа: Свой
Сообщений: 289
Регистрация: 17-06-07
Пользователь №: 28 498

|
Цитата(Евгений Германович @ Oct 6 2007, 13:02)  Частота среза меня устраивает.Про Х не понял.У меня 24 разрядный АЦП диапазон от 0 до 16000000. Вы хотите сказать что махонькие цифирьки смогут повлиять на 16млн?Если я вас правильно понял размерность Х может быть любой? Алгоритм должен работать для любого диапазона вещественных чисел. "махонькие цифирьки" - это все-таки коэффициенты, которые умножаются на Ваши Х - неважно, какого они диапазона. Первая простейшая проверка коэффициентов фильтра НЧ (а это именно он) - это вычислить, дает ли формула при "постоянном токе" (бесконечное множество одинаковых чисел) Х на входе то же самое значение Х на выходе. Для указанной в источнике формулы Y[i] = B[0]*X[i] + B[1]*X[i-1] + B[2]*X[i-2] - A[1]*Y[i-1] -A[2]*Y[i-2] если взять X[i] = X[i-1] = X[i-2] = ... = Х, то всегда будет Y[i] = Х, если выполняется равенство B[0] + B[1] + B[2] - A[1] - A[2] = 1 . Для указанных в источнике коэффициентов это равенство выполняется с высокой точностью. Вторая простая проверка коэффициентов ФНЧ - это проверить, будет ли на выходе 0, если на входе дать "сигнал высокой частоты". Если взять на входе последовательность чисел одинакового абсолютного значения Х с чередующимся знаком, т.е. X[i] = -X[i-1] = X[i-2] = -X[i-3] ... = Х, то на выходе будет Y[i] = 0, если выполняется равенство B[0] - B[1] + B[2] = 0 . Для указанных в источнике коэффициентов это равенство тоже выполняется с высокой точностью. Будет ли этот фильтр с указанными коэффициентами иметь нужные Вам частотные свойства - проверяйте на более сложных последовательностях чисел, при помощи Excel, Matlab, Mathematica или еще чего-нибудь. Но от диапазона чисел работоспособность (и относительная точность) фильтра точно зависеть не будет.
|
|
|
|
|
Oct 12 2007, 06:05
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Евгений Германович @ Jul 11 2007, 17:50)  Я использовал фильтры типа: усредняющих (медианный) и типа цифрового апериадического. Фильтры 2-го порядка не применял, т.к. слишком увеличивается время вычислений. Мое мнение: - для усредняющих фильтров биение уменьшается в корень квадратный от количества измерений; - для апериодического фильтра, чем больше постоянная времени, тем биения меньше (примерно также, как в усредняющем). Т.е. беря частоту считывания АЦП в 10 раз выше, Вы уменьшаете биения в 3 с небольшим раза. Это даже согласуется с нормальным законом распределения ошибки при измерении.  PS. Мне больше нравятся апериодичекие фильтры, но это дело вкуса.
|
|
|
|
|
Oct 12 2007, 07:15
|
Местный
  
Группа: Свой
Сообщений: 289
Регистрация: 17-06-07
Пользователь №: 28 498

|
Цитата(alexander55 @ Oct 12 2007, 08:05)  Я использовал фильтры типа: усредняющих (медианный) и типа цифрового апериадического. Фильтры 2-го порядка не применял, т.к. слишком увеличивается время вычислений. Мое мнение: - для усредняющих фильтров биение уменьшается в корень квадратный от количества измерений; - для апериодического фильтра, чем больше постоянная времени, тем биения меньше (примерно также, как в усредняющем). Т.е. беря частоту считывания АЦП в 10 раз выше, Вы уменьшаете биения в 3 с небольшим раза. Это даже согласуется с нормальным законом распределения ошибки при измерении.  PS. Мне больше нравятся апериодичекие фильтры, но это дело вкуса. 1) Мне почему-то кажется, что усредняющий и медианный фильтр - это не одно и то же. Усредняющий считает среднее значение (сумма значений разделить на кол-во), а медианный - выдает среднее из сортированных значений (которых всегда нечетное кол-во). Если это не так, прошу ссылки на источник, где это однозначно определено. 2) Вероятно, Вы имеете в виду апериодический фильтр первого порядка. Обсуждавшийся здесь фильтр Баттерворта второго порядка отличается от апериодического фильтра второго порядка всего лишь значениями самих коэффициентов. 3) Конечно, выбор фильтра - дело вкуса. Но еще выбор фильтра зависит от требований к качеству результата и от имеющейся в распоряжении "вычислительной мощности".
|
|
|
|
|
Oct 12 2007, 07:54
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Okorok @ Oct 12 2007, 11:15)  1) Мне почему-то кажется, что усредняющий и медианный фильтр - это не одно и то же. Усредняющий считает среднее значение (сумма значений разделить на кол-во), а медианный - выдает среднее из сортированных значений (которых всегда нечетное кол-во). Если это не так, прошу ссылки на источник, где это однозначно определено. Вы правы, но практической разницы между ними не ощущается. Цитата(Okorok @ Oct 12 2007, 11:15)  2) Вероятно, Вы имеете в виду апериодический фильтр первого порядка. Совершенно верно, Вы меня правильно поняли. Цитата(Okorok @ Oct 12 2007, 11:15)  Обсуждавшийся здесь фильтр Баттерворта второго порядка отличается от апериодического фильтра второго порядка всего лишь значениями самих коэффициентов. Да, но зачем усложнение. По физике коэффициент для второй разностной суммы будет нуль. Конечно, можно половить блошек. Цитата(Okorok @ Oct 12 2007, 11:15)  3) Конечно, выбор фильтра - дело вкуса. Но еще выбор фильтра зависит от требований к качеству результата и от имеющейся в распоряжении "вычислительной мощности". Согласен.
|
|
|
|
|
Oct 12 2007, 09:04
|
Местный
  
Группа: Свой
Сообщений: 289
Регистрация: 17-06-07
Пользователь №: 28 498

|
"Мне почему-то кажется, что усредняющий и медианный фильтр - это не одно и то же." Цитата(alexander55 @ Oct 12 2007, 09:54)  Вы правы, но практической разницы между ними не ощущается. - Единственное высказывание, требующее возражения. Разница между медианным и усредняющим фильтрами имеет огромное практическое значение. Иллюстрация, например, здесь, картинка в конце страницы: Левая колонка синих отсчетов - входной сигнал; Средняя колонка красных отсчетов - результат работы усредняющего фильтра; Правая колонка красных отсчетов - результат работы медианного фильтра.
|
|
|
|
|
Oct 12 2007, 09:42
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Okorok @ Oct 12 2007, 13:04)  "Мне почему-то кажется, что усредняющий и медианный фильтр - это не одно и то же." - Единственное высказывание, требующее возражения. Разница между медианным и усредняющим фильтрами имеет огромное практическое значение. Иллюстрация, например, здесь, картинка в конце страницы: Левая колонка синих отсчетов - входной сигнал; Средняя колонка красных отсчетов - результат работы усредняющего фильтра; Правая колонка красных отсчетов - результат работы медианного фильтра. А где сравнение с усредняющим фильтром, я это не увидел. Могу еще предложить кое-какие варианты фильтров (для большей полноты). Например, с коэффициентами возведения в степень. Плюс. Коэффициенты целые числа - можно обойтись сдвигами, без умножения. Минус. Для большого количества членов включаются тормоза.
|
|
|
|
|
Oct 12 2007, 10:30
|
Местный
  
Группа: Свой
Сообщений: 289
Регистрация: 17-06-07
Пользователь №: 28 498

|
Цитата(alexander55 @ Oct 12 2007, 11:42)  А где сравнение с усредняющим фильтром, я это не увидел. Средняя колонка - усредняющий фильтр, правая - медианный фильтр. Собственно, картинки и демонстрируют разницу.
|
|
|
|
|
Oct 12 2007, 11:55
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(Okorok @ Oct 12 2007, 11:15)  ... а медианный - выдает среднее из сортированных значений (которых всегда нечетное кол-во). Если это не так, прошу ссылки на источник, где это однозначно определено. Ссылку не приведу, но выходом медианного фильтра для четного числа отсчетов принято считать полусумму двух средних по росту отсчетов. 2 alexander55Как уже заметила TanyaЦитата медианная фильтрация убирает редкие случайные помехи (выбросы) По картинкам по приведенной выше ссылке можно заметить, что медианный фильтр задавит полностью помеху с плотностью ниже int((ширины его окна + 1)/2) и благополучно пропустит помеху с большей плотностью. Плюс медианного фильтра - он одинаково хорошо задавит выбросы и вверх, и вниз даже в пределах одного окна (на картинках приведены вариант с выбросами только вверх). Минус - сильное и плохо предсказуемое искажение ФЧХ сигнала на выходе, если верхняя частота во входном сигнале превышает частоту отсчетов/3*ширины окна. Т.е. без изрядного оверсемплинга его лучше не использовать.
|
|
|
|
|
Oct 12 2007, 13:38
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(Евгений Германович @ Oct 12 2007, 17:23)  При частоте квантования 25Гц и кол-ве отсчетов для увреднения 30 я получал нестабильность порядка 0.004Б при входном сигнале -4Б.Баттерворт дает примерно тоже самое при частоте 10.Возможно стоит применить вначале медианный фильтр,вроде он убирает выбросы. Если в выборке нет явных выбросов типа 100 101 100 99 200 100 99 10 100 то толку от медианного фильтра не будет.
|
|
|
|
|
Oct 13 2007, 20:13
|
Местный
  
Группа: Свой
Сообщений: 289
Регистрация: 17-06-07
Пользователь №: 28 498

|
Цитата(Евгений Германович @ Oct 13 2007, 15:02)  Вся беда в том ,что они иногда бывают.Проблема в том как приспособить медианный фильтр.Баттерворт или усреднение решаются просто,а для медианы нужно хранить отсчеты в памяти а это скажется на быстродействии. Для вычисления фильтра Баттерворта 2го порядка, кроме текущего значения на входе, нужны еще 2 предыдущих значения на входе и 2 предыдущих значения на выходе. Эти предыдущие значения тоже хранятся в памяти! Если быстродействие позволяет, рекомендую попробовать медианный фильтр по трем последним отсчетам перед применением «обычного» фильтра (усредняющего или Баттерворта). По сравнению с фильтром Баттерворта 2го порядка, медианный фильтр по трем последним отсчетам не потребует ни одной дополнительной ячейки памяти: он использует текущее значение и 2 предыдущих значения на входе.
|
|
|
|
|
Oct 14 2007, 09:43
|
Местный
  
Группа: Свой
Сообщений: 289
Регистрация: 17-06-07
Пользователь №: 28 498

|
Цитата(Евгений Германович @ Oct 14 2007, 08:20)  А окно один отсчет? я вас правильно понял?Про баттерворт все понятно,но для него результат на выход выдается после каждого отсчета ,а для медианы надо ждать. Я не знаю, что Вы называете "окно один отсчет". И для фильтра Баттерворта, и для медианного фильтра результат на выход выдается после каждого отсчета. И для фильтра Баттерворта, и для медианного фильтра результат на выходе "надо ждать": для медианного фильтра задержка в два отсчета, а для фильтра Баттерворта, кажется, задержку считать нужно (консервативная оценка - тоже два отсчета). Задержка есть у всех "крутых" фильтров. Цитата(Евгений Германович @ Oct 14 2007, 08:20)  И мне кажется что медиана с тремя отсчетами это не круто. Если Вас интересует фильтр не крутой, а эффективный (т.е. качественный результат при минимальных затратах вычислительной мощности), то медианный фильтр даже с тремя отсчетами стОит попробовать. Для "искры" (ВЧ помехи, при которой портится ровно один отсчет) эффективнее медианного фильтра с тремя отсчетами Вы ничего не найдете. Будет ли для Вашей задачи тот или иной фильтр полезен - зависит от задачи и поставленных требований к помехоустойчивости.
|
|
|
|
|
Oct 14 2007, 11:23
|
Местный
  
Группа: Свой
Сообщений: 289
Регистрация: 17-06-07
Пользователь №: 28 498

|
Цитата(Евгений Германович @ Oct 14 2007, 12:16)  Мы видимо не понимаем друг друга.Если применить медианный фильтр то мне надо накопить некоторое кол-во отсчетов ,а затем пройтись по ним окошком в 3 отсчета определяя среднее из них и этот отсчет запихнуть в фильтр баттерворта.Так? Нет, не так. Оба фильтра можно (а здесь и нужно) реализовать как «скользящие» фильтры. Пусть X – последовательность на входе медианного фильтра, W – последовательность на выходе медианного фильтра (промежуточный результат), Y - последовательность на выходе фильтра Баттерворта 2го порядка. Для определения каждого текущего значения результата W[i] медианному фильтру с «окном» в 3 отсчета требуются только текущее и два предыдущих значения на входе X[i], X[i-1], X[i-2]. Затем промежуточный результат W используем как входную последовательность для фильтра Баттерворта. Для определения каждого текущего значения результата Y[i] медианному фильтру требуются только текущее и два предыдущих значения на входе W[i], W[i-1], W[i-2], а также два предыдущих значения на выходе Y[i-1], Y[i-2]. Минимальная задержка между X и W - два отсчета, между W и Y – еще два отсчета. Общая задержка между X и Y – четыре отсчета при правильной реализации. Общее кол-во требуемых ячеек памяти для запоминания текущих значений и используемой «предыстории» - девять (X[i], X[i-1], X[i-2], W[i], W[i-1], W[i-2], Y[i], Y[i-1], Y[i-2]).
|
|
|
|
|
Oct 17 2007, 12:25
|
Местный
  
Группа: Свой
Сообщений: 289
Регистрация: 17-06-07
Пользователь №: 28 498

|
Цитата(_Pasha @ Oct 17 2007, 07:32)  Отвлекся, написал глупость. Я имел в виду четное число квантов уровня, конечно. Извините. Про книгу насчет медианы Ходжеса-Лемана Методы электрических измерений: Учебное пособие для вузов /Л.Г. Журавин, М.А. Мариненко, Е.И. Семенов, Э.И. Цветков; под.ред. Э.И. Цветкова. - Л.: Энергоатомиздат. Ленингр. отд-ние, 1990. -228с.: ил. с. 161-168 Если можно, выдайте ссылку на книгу в электронном виде. Заранее благодарю!
|
|
|
|
|
Oct 19 2007, 11:14
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Евгений Германович @ Oct 18 2007, 17:45)  800000 это ноль .ffffff 'это +2вольта разница в 7fffff.тогда -2вольта это 000001,код 000000 это переполнение и не симметрия. Если представление в дополнительном коде,то 800000 это -MAX; 0 это 0; 7fffff это +MAX. Если представление модуль со знаком, то старший бит знак. Я не понимаю, в чем проблема.
|
|
|
|
|
Oct 22 2007, 05:25
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Евгений Германович @ Oct 19 2007, 16:48)  Код не дополнительный,а смещенный. Если код смещенный, он и будет дополнительным для отрицательных напряжений. Цитата(Евгений Германович @ Oct 19 2007, 16:48)  Как справедливо заметил кто-то из ранее выступавших код 0 и 80 принимают за ноль Тогда это представление модуль и знак, а не смещенный. Какой на самом деле, разберитесь. Цитата(Евгений Германович @ Oct 19 2007, 16:48)  Суть в том что кодов с + на 1 меньше чем кодов с _. Я выше уже оценил погрешность от этого факта. Погрешность либо устраивает, либо нет. Если нет, то можно учесть, введя коэффициент расчета для положительных величин и коэффициент для расчета отрицательных величин.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|