О сайте Группа в контакте RSS Годограф Volksturm Импульсные металлоискатели IB металлоискатели Пинпоинтеры Другие схемы Заказать Конструкции металлоискателей Полезные ссылки

Схемы металлоискателей MD4U

Сборка, настройка, обсуждение, теория и практика построения металлоискателей.
Текущее время: Чт: 28 мар 2024 20:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему
 [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Гребёнчато-интегрирующие фильтры
СообщениеДобавлено: Пн: 23 авг 2010 22:59 
Не в сети
Аватара пользователя

Зарегистрирован: Вс: 06 ноя 2005 11:17
Сообщения: 4527
Откуда: С.-Петербург
Изображение

Пример реализации фильтра на 8 точек:

Код:
int igf8(int input)
{
int                  a;
static int           x[9];
static unsigned char in_pnt      = 0;
static int           y           = 0;

    x[in_pnt] = a = input;                              // Гребёнчатая часть
    if (++in_pnt > 8)
      in_pnt = 0;
    a -= x[in_pnt];
   
    y += a;                                             // Интегрирующая часть
    return y >> 3;                                      // Масштабирование
}


Вернуться к началу
 Профиль  
 


Вы можете отключить эти сообщения.
 Заголовок сообщения: Re: Гребёнчато-интегрирующие фильтры
СообщениеДобавлено: Пн: 23 авг 2010 23:15 
Не в сети
Аватара пользователя

Зарегистрирован: Ср: 25 мар 2009 16:13
Сообщения: 1097
Откуда: Ukraine, Полтава
Andy_F писал(а):
Пример реализации фильтра на 8 точек:
Код:
int igf8(int input)
{
int                  a;
static int           x[9];
static unsigned char in_pnt      = 0;
static int           y           = 0;

    x[in_pnt] = a = input;                              // Гребёнчатая часть
    if (++in_pnt > 8)
      in_pnt = 0;
    a -= x[in_pnt];
   
    y += a;                                             // Интегрирующая часть
    return y >> 3;                                      // Масштабирование
}

И каков смысл этой конструкции? Буфер на 8 значений, которые постоянно суммируются и делятся на 8, новое значение прибавляется, старое "уходит". А на выходе что имеем? Усредненное за 8 периодов значение. А как его в роли фильтра использовать? (извиняюсь за тупые вопросы, ЦОС из-за неиспользования забыл напрочь)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Гребёнчато-интегрирующие фильтры
СообщениеДобавлено: Пн: 23 авг 2010 23:27 
Не в сети
Аватара пользователя

Зарегистрирован: Вс: 06 ноя 2005 11:17
Сообщения: 4527
Откуда: С.-Петербург
Eddy71 писал(а):
...А как его в роли фильтра использовать?

Нет у нас здесь достойного смайлика, к сожалению, всё время мучаюсь...

Всё верно описано. Отвечу по методу царя Соломона, встречным вопросом - а что такое фильтр ? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Гребёнчато-интегрирующие фильтры
СообщениеДобавлено: Вт: 24 авг 2010 14:34 
Не в сети
Аватара пользователя

Зарегистрирован: Ср: 25 мар 2009 16:13
Сообщения: 1097
Откуда: Ukraine, Полтава
Если не спрашивать как в Одессе "..таки который из них?.." ;)
Но в моем понимании фильтр обычно используют для 1) пропустить сигнал нужной частоты Х, остальные убрать; 2)пропустить сигналы с частотй ниже Х, аостальные убрать; 3)пропустить сигналы частотой выше Х, остальное не пускать; 4) пропустить всё, кроме сигнала с частотой Х.
А так я вижу усреднение сигнала за время 8 отсчетов. Могу только догадываться, что если период входного сигнала будет 1/8 от периода входных сэмплов в буфере образуется "схваченная волна" - один период входного сигнала. Но вот какое полезное свойство этого?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Гребёнчато-интегрирующие фильтры
СообщениеДобавлено: Вт: 24 авг 2010 16:45 
Не в сети
Аватара пользователя

Зарегистрирован: Вс: 06 ноя 2005 11:17
Сообщения: 4527
Откуда: С.-Петербург
Или всё и правда прочно забыто, или одно из двух... 8)

Вверху на картинке - оконные функции для КИХ фильтров (коэффициенты, на которые умножаются отсчёты при свёртке). Скользящее среднее соответствует прямоугольному окну, все отсчёты умножаются на единицу (или на 1 / N).
Внизу - АЧХ фильтров с разными оконными функциями (в том числе для прямоугольного окна). Скользящее среднее представляет из себя вполне приличный ФНЧ с "бесконечным" подавлением на частотах 2 * Fs / N , где Fs - частота дискретизации, N - длина фильтра. И, что немаловажно, с линейной ФЧХ.

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Гребёнчато-интегрирующие фильтры
СообщениеДобавлено: Вт: 24 авг 2010 20:34 
Не в сети
Аватара пользователя

Зарегистрирован: Ср: 25 мар 2009 16:13
Сообщения: 1097
Откуда: Ukraine, Полтава
К моему стыду забыто напрочь. Когда изучал (точнее проходил) ;) , верхом совершенства были 80с35, 80с48 и только начали появляться в ходу 80с51. Поэтому казалось что ЦОС за уши притянутая дисциплина и никогда не пригодится.. Сейчас кусаю локти. :oops:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Гребёнчато-интегрирующие фильтры
СообщениеДобавлено: Чт: 26 авг 2010 6:46 
Не в сети

Зарегистрирован: Пн: 27 апр 2009 10:52
Сообщения: 68
А почему бы все это не выкинуть и попробовать медианные фильтры с последующим проходом LPF?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Гребёнчато-интегрирующие фильтры
СообщениеДобавлено: Чт: 26 авг 2010 11:55 
Не в сети
Аватара пользователя

Зарегистрирован: Вс: 06 ноя 2005 11:17
Сообщения: 4527
Откуда: С.-Петербург
JH писал(а):
А почему бы все это не выкинуть и попробовать медианные фильтры с последующим проходом LPF?

Вот и попробуйте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Гребёнчато-интегрирующие фильтры
СообщениеДобавлено: Чт: 26 авг 2010 12:29 
Не в сети

Зарегистрирован: Пн: 27 апр 2009 10:52
Сообщения: 68
:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Гребёнчато-интегрирующие фильтры
СообщениеДобавлено: Пт: 27 авг 2010 16:03 
Не в сети
Аватара пользователя

Зарегистрирован: Вс: 26 авг 2007 12:54
Сообщения: 1063
Интересный фильтр, судя по описанию приемущество по сравнению с скользящим средним в меньшем количестве вычислений. Если не ошибаюсь автором проводились некоторые сравнительные эксперименты, если есть какие данные или графики былобы интересно посмотреть.

Реализация кода неплохая, хотя есть конечно недостатки. Знаковый инт нехорошо делить на 8 тремя сдвигами в право. Не все компиляторы проверяют знак числа перед сдвигом, только некоторые заполняют отрицательный результат единицами в старших разрядах. Резуьтат АЦП как правило без знака поэтому код наверно можно немножко переделать, результат работы не проверял но по идее должно работать. Если АЦП 12-бит то можно на интах сделать усреднение до 16-и отсчётов.

Код:
unsigned int igf16 (unsigned int x_in)
{
  static unsigned int x[17], y;
  static unsigned char idx;
 
  x[idx] = x_in;
  idx++; if (idx > 16) idx = 0;
  y += x_in - x[idx];
  return y >> 4;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Гребёнчато-интегрирующие фильтры
СообщениеДобавлено: Пт: 27 авг 2010 17:39 
Не в сети
Аватара пользователя

Зарегистрирован: Вс: 06 ноя 2005 11:17
Сообщения: 4527
Откуда: С.-Петербург
Petrucho писал(а):
Интересный фильтр, судя по описанию приемущество по сравнению с скользящим средним в меньшем количестве вычислений. Если не ошибаюсь автором проводились некоторые сравнительные эксперименты, если есть какие данные или графики былобы интересно посмотреть.

Считать себя автором было бы, мягко говоря, не скромно :) . По сути, это то же самое скользящее среднее. Я его смотрел в MATLAB'е (на сериях реальных отсчётов), он совпадает с классическим скользящим средним с точностью до младшего разряда (изредка на 1 расходится). Это если оперировать целочисленными значениями.

Petrucho писал(а):
..., результат работы не проверял но по идее должно работать.

А я проверял... :( . Например, вот это: x_in - x[idx], если оба беззнаковые, и x_in окажется меньше, чем x[idx], результат будет весьма задумчивым.

Petrucho писал(а):
Если АЦП 12-бит то можно на интах сделать усреднение до 16-и отсчётов.

Только если использовать unsigned (с которыми не сложилось). Но никто не мешает каскадировать фильтры... :wink:


Вернуться к началу
 Профиль  
 
В сети

Вы можете отключить эти сообщения.
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


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

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


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

Найти:
Перейти:  
cron