Фильтры

Программа Формула

Меню Фильтры содержит функции, накладывающие различные фильтры:

Фильтры

Несколько слов насчет использования КИХ-фильтров

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

Количество коэффициентов фильтра вычисляется согласно следующему алгоритму:

1) определяется тактовая частота установленного процессора, и число коэффициентов рассчитывается так, чтобы загрузка одного ядра процессора составляла 3%. Формула для расчета:

tapslen = CPUSPEED*2%/ADC_FREQUENCY,

где tapslen — число коэффициентов фильтра,
CPUSPEED — тактовая частота процессора, Гц,
ADC_FREQUENCY — частота дискретизации по фильтруемому каналу.

2) Если полученный результат превышает рационально допустимое количество коэффициентов (2000), то количество коэффициентов приравнивается к нему.

3) Если полученный результат меньше минимально допустимого(20), то количество коэффициентов приравнивается к нему.

4) Если полученный результат не позволяет вычислить результат с требуемой точностью по частоте, то используется формула:

tapslen = 1/(0.5*NORM_FREQ),

где NORM_FREQ — нормализованная частота, т.е. введенная частота отнесенная к частоте дискретизации.

5) Если же полученный результат является слишком дорогостоящим по вычислительной мощности (загружает более 30% одного ядра процессора), то окончательный результат будет рассчитываться по формуле:

tapslen = CPUSPEED*30%/ADC_FREQUENCY.

Пример:

Пусть необходимо рассчитать временную задержку по каналу с частотой дискретизации 500 кГц на двухядерном процессоре 2.5 ГГц, при наложении ФНЧ на 300 Гц.
Воспользуемся алгоритмом по шагам:
1) tapslen = 2.5e+9 * 2e-2 / 5e+5 = 100 — вариант при котором загрузка процессора составит 2% делённое на количество ядер, т.е. 1%
2), 3) — не влияют на результат
4) tapslen = 1 / (5e-1 * 3e+2 / 5e+5) = 3.3e+3 — такое количество коэффициентов необходимо для удовлетворения поставленной задачи
5) tapslen = 2.5e+9 * 3e-1/ 5e+5 = 1500 — такое количество коэффициентов мы можем себе позволить при данных условиях.

Теперь, когда получено количество коэффициентов фильтра tapslen = 1500, оценим временную задержку и то насколько требуемый фильтр удовлетворяет нашим требованиям по точности.

Временная задержка dt = tapslen/ADC_FREQUENCY = 1.5e+2 / 5e+5 = 3e-4 (секунды), или 300 мкс.

Частота среза фильтра составит: Fсреза = ADC_FREQUENCY/(0.5e-1 * tapslen) = 5e+5 / ( 0.5e-1 * 1.5e+3) = 6.7e+3 (Герц), т.е. в два раза больше чем требовалось.

Будьте внимательны! При высоких частотах дискретизации не стоит настраивать фильтры с очень большой точностью — вы загрузите процессор, а результата так и не добьетесь. Старайтесь выбирать для измерений наиболее оптимальный диапазон частот. Если вам нужно исследовать ВЧ-сигнал, то мы советуем использовать аппаратный гетеродин.

Примечание: в программе Фильтрация сигналов используются фильтры с бесконечной импульсной характеристикой. При описании фильтров Формулы будут приводиться результаты работы фильтров программы Фильтрация сигналов — для сравнения.

Описание фильтров

FIRl(<канал>, const) – фильтр низких частот с граничной частотой равной const. Частота не может быть меньше нуля и больше половины частоты дискретизации. Данный тип фильтра следует использовать для отсечения нежелательных высокочастотных составляющих, к примеру — в задаче идентификации движения человека или автомобиля по земле, где интересующий нас сигнал лежит в области низких частот.

FIRh(<канал>, const) – фильтр высоких частот с граничной частотой равной const. Частота не может быть меньше нуля и больше половины частоты дискретизации. Данный тип фильтра следует использовать для отсечения постоянной и низкочастотной составляющих сигнала. Пример использования: вывод звуковой информации с отсечением неслышимой части и постоянной составляющей.

На рисунках ниже приведен пример фильтрации шумового сигнала (используется функция формулы ) фильтром низких и фильтром высоких частот в программе Формула и программе Фильтрация сигналов.

Фильтры - параметры

Фильтрация сигналов

Спектр исходного сигнала
Спектр исходного сигнала

Спектр сигнала, обработанного ФНЧ программы Формула
Спектр сигнала, обработанного ФНЧ программы Формула

Спектр сигнала, обработанного ФНЧ программы Фильтрация сигналов
Спектр сигнала, обработанного ФНЧ программы Фильтрация сигналов

Спектр сигнала, обработанного ФВЧ программы Формула
Спектр сигнала, обработанного ФВЧ программы Формула

Спектр сигнала, обработанного ФВЧ программы Фильтрация сигналов
Спектр сигнала, обработанного ФВЧ программы Фильтрация сигналов

FIRbp(<канал>, const 1, const 2) – полосовой фильтр, пропускающий частоты от первой до второй. Значения частот не могу быть меньше нуля и больше половины частоты дискретизации. Если введены такие значения, то фильтр на их место подставляет предельно допустимые. Фильтр может быть использован для вырезания частот соответствующих человеческому голосу.

FIRbs(<канал>, const 1, const 2) – полосовой фильтр, вырезающий частоты от первой до второй. Значения частот не могу быть меньше нуля и больше половины частоты дискретизации. Если введены такие значения, то фильтр на их место подставляет предельно допустимые. Разницы в порядке следования частот в выражении нет.

На рисунках ниже приведен пример фильтрации шумового сигнала (используется функция формулы ) полосопропускающим фильтром (ППФ) и полосозаграждающим фильтром (ПЗФ) в программе Формула и программе Фильтрация сигналов.

Параметры фильтрации в программе Формула

Параметры фильтрации в программе Фильтрация сигналов

Спектр исходного сигнала (белый шум)
Спектр исходного сигнала

Спектр сигнала, обработанного ППФ программы Формула
Спектр сигнала, обработанного ППФ программы Формула

Спектр сигнала, обработанного ППФ программы Фильтрация сигналов
Спектр сигнала, обработанного ППФ программы Фильтрация сигналов

Спектр сигнала, обработанного ПЗФ программы Формула
Спектр сигнала, обработанного ПЗФ программы Формула

Спектр сигнала, обработанного ПЗФ программы Фильтрация сигналов
Спектр сигнала, обработанного ПЗФ программы Фильтрация сигналов

FIRInteg(<канал>) – интегрирующий КИХ-фильтр, является потенциально неустойчивым, поэтому перед его применением следует ставить фильтр высоких частот.

FIRDiff(<канал>) — дифференцирующий КИХ-фильтр

FIRAFCH(<канал1>, <канал2>) – КИХ-фильтр с заданной формой АЧХ.

Heterodyne(<канал>, частота, полоса) – гетеродин. Вырезает из спектра сигнала полосу с частотой Frequency Гц и полосой Band Гц. Затем сдвигает её в область низких частот. Основным использованием гетеродина является частотная демодуляция сигнала — процесс переноса части спектра из области высоких частот в область низких. Применяется в радиотехнических задачах.

SMA(<канал1>, время) — фильтрует скользящее среднее значения которых в каждой точке определения равны среднему значению исходной функции за предыдущий период. Скользящие средние обычно используются с данными временных рядов для сглаживания краткосрочных колебаний. Математически скользящее среднее является одним из видов свёртки, и поэтому его можно рассматривать как фильтр низких частот, используемых в обработке сигналов. Так как при расчёте скользящего среднего значение функции вычисляется каждый раз заново, при этом учитывается конечное значимое множество предыдущих значений скользящее среднее «перемещается» (движется), как бы «скользя» по временному ряду (Подробнее).

EMA(<канал1>, константа) — фильтрует экспоненциальное среднее. В обычном экспоненциальном скользящем среднем сглаживанию подвергается значения исходной функции, однако, сглаживанию могут подвергаться и значения результирующей функции. Значение «Константа» должно изменяться от 0 до 1, чем оно меньше, тем более крупным становится экспоненциальное значение (Подробнее).

Median(<канал1>, Time) — эффективная процедура обработки сигналов, подверженных воздействию импульсных помех. Является одним из видов цифровых фильтров, широко используемый в цифровой обработке сигналов и изображений для уменьшения уровня шума. Медианный фильтр является нелинейным КИХ-фильтром.Значения отсчётов внутри окна фильтра сортируются в порядке возрастания (убывания); и значение, находящееся в середине упорядоченного списка, поступает на выход фильтра. В случае четного числа отсчетов в окне выходное значение фильтра равно среднему значению двух отсчетов в середине упорядоченного списка. Окно перемещается вдоль фильтруемого сигнала и вычисления повторяются (Подробнее).

Grubbs(<канал1>, Time, Q) — осуществляет исключение грубых погрешностей. Для исключения грубых погрешностей используют критерий Граббса. Статистический критерий Граббса исключения грубых погрешностей основан на предположении о том, что группа результатов измерений принадлежит нормальному распределению (Подробнее). Выполнен по ГОСТ Р 8.736-2011 «ГСИ. Измерения прямые многократные. Методы обработки результатов измерений».

Вам также будет интересно…

Авторизация
*
*

Потеряли пароль?

Политика конфиденциальности персональных данных

Регистрация
*
*
*

Политика конфиденциальности персональных данных

Генерация пароля