Документация Engee

decimate

Страница в процессе разработки.

Децимация — уменьшение частоты дискретизации в целое число раз.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • y = decimate(x::AbstractVecOrMat, r::Real, mode::String) — уменьшает частоту дискретизации входного сигнала x в r раз. Сигнал выходной сигнал y сокращается в r раз: length(y) = ceil(length(x)/r). Использует КИХ фильтр с конечной импульсной характеристикой, разработанный с использованием окна Хэмминга. Фильтр имеет порядок 30.

  • y = decimate(x::AbstractVecOrMat, r::Real) — функция decimate использует БИХ фильтр Чебышева I 8-го порядка.

  • y = decimate(x::AbstractVecOrMat, r::Real, n::Real, mode::String) — использует КИХ фильтр, разработанный с использованием окна Хэмминга. Фильтр имеет порядок n.

  • y = decimate(x::AbstractVecOrMat, r::Real, n::Real) — использует фильтр Чебышева порядка n.

Аргументы

Входные аргументы

# mode — использование КИХ-фильтра
Строка

Details

Если установлено значение "fir", то функция decimate использует функцию fir1 для проектирования КИХ-фильтра нижних частот с частотой среза 1/r.

# x — входной сигнал
AbstractVecOrMat

Details

Входной сигнал в виде вектора.

Типы данных

Float32, Float64

# r — коэффициент децимации
Вещественное число

Details

Коэффициент децимации, заданный как целое положительное число. Для получения лучших результатов при r больше 13, разделите r на меньшие множители и вызовите decimate несколько раз.

Типы данных

Float32, Float64

# n — порядок фильтрации
Вещественное число

Details

Порядок фильтрации, указанный как положительное целое число. Для БИХ-фильтра не рекомендуется использовать порядок фильтрации выше 13 из-за числовой нестабильности. В таких случаях функция выводит предупреждение.

Типы данных

Float32, Float64

Выходные аргументы

# y — сигнал с уменьшенной частотой дискретизации

Details

Сигнал с уменьшенной частотой дискретизации.

Типы данных

Float32, Float64

Алгоритмы

Децимация уменьшает первоначальную частоту дискретизации последовательности до более низкой. Это противоположность интерполяции. Функция decimate применяет к входному сигналу низкочастотную фильтрацию для защиты от наложения спектров (алиасинга) и выполняет прореживание результата. Функция использует алгоритмы прореживания 8.2 и 8.3 из [1].

  1. decimate создает фильтр нижних частот. По умолчанию используется БИХ фильтр Чебышева I. Этот фильтр имеет нормированную частоту среза, равную 0.8/r, и пульсацию полосы пропускания, равную 0.05 дБ. Иногда указанный порядок фильтрации приводит к искажению полосы пропускания из-за ошибок округления, накопленных в результате сверток, необходимых для создания передаточной функции. Функция decimate производит автоматическое уменьшение порядка фильтрации, когда искажение приводит к тому, что амплитудная характеристика на частоте среза отличается от пульсаций более чем на 10-6.

    При выборе опции "fir" функция decimate использует функцию fir1 для проектирования КИХ-фильтра нижних частот с частотой среза 1/r.

  2. При использовании КИХ-фильтра, функция decimate фильтрует входную последовательность только в одном направлении. Это экономит память и полезно для работы с длинными последовательностями. В случае БИХ-фильтра, функция decimate применяет фильтр в прямом и обратном направлениях, используя filtfilt для устранения фазовых искажений. По сути, этот процесс удваивает порядок фильтрации. В обоих случаях функция минимизирует переходные эффекты на обоих концах сигнала за счет согласования условий конечной точки.

  3. И, наконец, функция decimate выполняет повторную выборку данных, выбирая все r-е точки внутри отфильтрованного сигнала. В последовательности повторной дискретизации (y), y(end) соответствует x(end) когда используется БИХ-фильтр, и y(1) соответствует x(1) при использовании КИХ-фильтра.

Литература

  1. Digital Signal Processing Committee of the IEEE® Acoustics, Speech, and Signal Processing Society, eds. Programs for Digital Signal Processing. New York: IEEE Press, 1979.