exponenta event banner

dsp. FIRDecimator

Многофазный дециматор FIR

Описание

dsp.FIRDecimator Система object™ выполняет повторную выборку векторных или матричных входных данных вдоль первого размера. Дециматор КИХ (как показано на схеме) концептуально состоит из сглаживающего КИХ-фильтра, за которым следует понижающая дискретизация. Для проектирования фильтра сглаживания FIR используйте designMultirateFIR функция. Пример см. в разделе Уменьшение частоты дискретизации аудиосигнала.

Фильтр FIR фильтрует данные в каждом канале входного сигнала, используя фильтр FIR прямой формы. Блок понижающей дискретизации, который следует за ним, производит понижающую выборку каждого канала отфильтрованных данных путем отбрасывания M-1 последовательных выборок после каждой сохраненной выборки. M - указанное значение коэффициента прореживания. Результирующий дискретно-временной сигнал имеет частоту дискретизации, которая в 1/M раз больше исходной частоты дискретизации.

FIR decimator contains an anti-aliasing FIR filter followed by a downsampler.

Заметим, что алгоритм фактического объекта реализует многофазную структуру, эффективный эквивалент объединенной системы, изображенной на диаграмме. Дополнительные сведения см. в разделе Алгоритмы.

Для повторной выборки векторных или матричных входных данных вдоль первого размера:

  1. Создать dsp.FIRDecimator и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

При определенных условиях этот объект System также поддерживает создание кода SIMD. Дополнительные сведения см. в разделе Создание кода.

Создание

Описание

пример

firdecim = dsp.FIRDecimator возвращает дециматор FIR, firdecim, который применяет фильтр FIR с частотой отсечки 0.4*pi радианы/выборка на вход и понижает выходной сигнал фильтра на коэффициент 2.

firdecim = dsp.FIRDecimator(decimFactor,num) возвращает дециматор FIR с целочисленным значением DecimationFactor свойство имеет значение decimFactor и Numerator свойство имеет значение num.

firdecim = dsp.FIRDecimator(___,Name,Value) возвращает объект-прореживатель FIR с заданным значением каждого свойства. Заключите каждое имя свойства в кавычки. Этот синтаксис можно использовать с любыми предыдущими комбинациями входных аргументов.

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Источник коэффициента КИХ-фильтра, указанный как:

  • 'Property' - Числительные коэффициенты определяются через Numerator собственность.

  • 'Input port' - Числительные коэффициенты задаются в качестве входных данных алгоритма объекта.

Задайте числительные коэффициенты КИХ-фильтра как вектор строки в степенях z-1. Следующее уравнение определяет системную функцию для фильтра длиной N + 1:

H (z) =∑l=0Nblz−l

Вектор b = [b0, b1,..., bN] представляет вектор коэффициентов фильтра.

Для предотвращения наложения в результате понижающей дискретизации передаточная функция фильтра должна иметь нормализованную частоту отсечения не более 1/DecimationFactor. Чтобы создать эффективный фильтр сглаживания, используйте designMultirateFIR функция. Пример см. в разделе Децимация суммы синусоидальных волн.

Зависимости

Это свойство применяется, когда NumeratorSource имеет значение 'Property'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного номера: Да

Укажите реализацию фильтра FIR как Direct form или Direct form transposed.

Свойства с фиксированной точкой

Флаг для использования правил полной точности для арифметики с фиксированной точкой, указанный как одно из следующих значений:

  • true - Объект вычисляет все внутренние арифметические и выходные типы данных, используя правила полной точности. Эти правила обеспечивают наиболее точные числа фиксированных точек. В этом режиме другие свойства фиксированной точки не применяются. Квантование внутри объекта не происходит. При необходимости добавляются биты, чтобы гарантировать отсутствие скругления или переполнения.

  • false - Типы данных с фиксированной точкой управляются с помощью отдельных настроек свойств с фиксированной точкой.

Дополнительные сведения см. в разделах Полная точность для системных объектов с фиксированной точкой и Задать свойства системных объектов с фиксированной точкой.

Метод округления для операций с фиксированной точкой. Дополнительные сведения см. в разделе Режим округления.

Зависимости

Это свойство не отображается и не влияет на числовые результаты при выполнении следующих условий:

  • FullPrecisionOverride установить в значение true.

  • FullPrecisionOverride установить в значение false, ProductDataType установить в значение 'Full precision', AccumulatorDataType установить в значение 'Full precision', и OutputDataType установить в значение 'Same as accumulator'.

В этих условиях объект работает в режиме полной точности.

Действие переполнения для операций с фиксированной точкой, указанное как одно из следующих:

  • 'Wrap' - Объект переносит результат операций с фиксированной точкой.

  • 'Saturate' - Объект насыщает результат операций с фиксированной точкой.

Дополнительные сведения о действиях по переполнению см. в разделе Режим переполнения для операций с фиксированной точкой.

Зависимости

Это свойство не отображается и не влияет на числовые результаты при выполнении следующих условий:

  • FullPrecisionOverride установить в значение true.

  • FullPrecisionOverride установить в значение false, OutputDataType установить в значение 'Same as accumulator', ProductDataType установить в значение 'Full precision', и AccumulatorDataType установить в значение 'Full precision'

В этих условиях объект работает в режиме полной точности.

Тип данных коэффициентов фильтра FIR, указанный как:

  • Same word length as input - Длина слова коэффициентов такая же, как у входного сигнала. Длина дроби вычисляется для обеспечения максимально возможной точности.

  • Custom - Тип данных коэффициентов определяется как пользовательский числовой тип через CustomCoefficientsDataType собственность.

Длины слов и дробей типа данных коэффициентов, указанные как автоматически назначенные numerictype (Fixed-Point Designer) со словом длиной 16 и дробью 15.

Зависимости

Это свойство применяется при установке CoefficientsDataType свойство для Custom.

Тип данных вывода продукта в этом объекте, указанный как один из следующих:

  • 'Full precision' - Тип выходных данных продукта имеет полную точность.

  • 'Same as input' -- Объект указывает, что тип выходных данных продукта должен совпадать с типом входных данных.

  • 'Custom' - Тип выходных данных продукта определяется как пользовательский числовой тип с помощью CustomProductDataType собственность.

Дополнительные сведения о типе выходных данных продукта см. в разделе Типы данных умножения.

Зависимости

Это свойство применяется при установке FullPrecisionOverride кому false.

Длины слов и дробей типа данных продукта, определяемые как автоматически назначаемый числовой тип с длиной слова 32 и длиной дроби 30.

Зависимости

Это свойство применяется только при установке FullPrecisionOverride кому false и ProductDataType кому 'Custom'.

Тип данных операции накопления в этом объекте, указанный как один из следующих:

  • 'Full precision' - Операция накопления имеет полную точность.

  • 'Same as product' -- Объект указывает тип данных накопителя, который должен совпадать с типом выходных данных продукта.

  • 'Same as input' -- Объект указывает, что тип данных накопителя должен совпадать с типом входных данных.

  • 'Custom' -- Тип данных накопителя указывается как пользовательский числовой тип с помощью CustomAccumulatorDataType собственность.

Зависимости

Это свойство применяется при установке FullPrecisionOverride кому false.

Длины слов и дробей типа данных накопителя, определяемые как автоматически назначаемый числовой тип с длиной слова 32 и длиной дроби 30.

Зависимости

Это свойство применяется только при установке FullPrecisionOverride кому false и AccumulatorDataType кому 'Custom'.

Тип данных вывода объекта, указанный как один из следующих:

  • 'Same as accumulator' - Тип выходных данных совпадает с типом выходных данных накопителя.

  • 'Same as input' - Тип выходных данных совпадает с типом входных данных.

  • 'Same as product' - Тип выходных данных совпадает с типом выходных данных продукта.

  • 'Custom' - Выходной тип данных указывается как пользовательский числовой тип через CustomOutputDataType собственность.

Зависимости

Это свойство применяется при установке FullPrecisionOverride кому false.

Длины слов и дробей выходного типа данных, определяемые как автоматически назначаемый числовой тип с длиной слова 16 и длиной дроби 15.

Зависимости

Это свойство применяется только при установке FullPrecisionOverride кому false и OutputDataType кому 'Custom'.

Использование

Описание

пример

y = firdecim(x) выводит отфильтрованные и пониженные значения, y, входного сигнала, x.

y = firdecim(x,num) использует фильтр FIR, num, для прореживания входного сигнала. Эта конфигурация действительна только в том случае, если 'NumeratorSource' свойство имеет значение 'Input port'.

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

развернуть все

Ввод данных, заданный как вектор столбца или матрица размера P-by-Q. Число входных строк, P, должно быть кратным DecimationFactor собственность. Входные столбцы представляют Q независимых каналов.

Этот объект поддерживает ввод переменного размера и не поддерживает сложные неподписанные вводы с фиксированной точкой.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного номера: Да

Коэффициенты КИХ-фильтра, заданные как вектор строки.

Зависимости

Этот ввод принимается только в том случае, если 'NumeratorSource' свойство имеет значение 'Input port'.

Типы данных: double
Поддержка комплексного номера: Да

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

развернуть все

КИХ прореженный выход, возвращаемый как вектор столбца или матрица размера P/M-by-Q, где M - коэффициент прореживания.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного номера: Да

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

freqzЧастотная характеристика объекта системы дискретно-временного фильтра
fvtoolВизуализация частотной характеристики фильтров DSP
infoСведения об объекте filter System
costОценка затрат на внедрение фильтра Объект системы
polyphaseМногофазное разложение многоскоростного фильтра
generatehdlСоздание кода HDL для квантованного фильтра DSP (требуется кодер HDL конструкции фильтра)
impzИмпульсная характеристика объекта системы дискретно-временного фильтра
coeffsВозвращает коэффициенты объекта System фильтра в структуре
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Примечание.Этот пример выполняется только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов функции эквивалентным step синтаксис. Например, myObject (x) становится шагом (myObject, x).

Этот пример показывает, как прореживать сумму синусоидальных волн с угловыми частотами pi/4 и 2pi/3 радиан/выборка в два раза. Для предотвращения наложения, дециматор FIR использует сглаживающий фильтр нижних частот, который отфильтровывает компонент 2pi/3 radians/sample перед понижающей дискретизацией. Чтобы сконструировать такой фильтр, используйте designMultirateFIR функция.

x = cos(pi/4*(0:95)')+sin(2*pi/3*(0:95)');
M = 2;
num = designMultirateFIR(1,M);
firdecim = dsp.FIRDecimator(M,num);

Прорежьте синусоидальный сигнал, используя этот прореживатель.

y = firdecim(x);

Постройте график исходных и повторно отобранных сигналов.

subplot(211);
stem(x(1:length(x)/2),'b','markerfacecolor',[0 0 1]);
title('Input Signal');
subplot(212);
stem(y,'b','markerfacecolor',[0 0 1]);
title('Output--Lowpass filtered and downsampled by 2');

Figure contains 2 axes. Axes 1 with title Input Signal contains an object of type stem. Axes 2 with title Output--Lowpass filtered and downsampled by 2 contains an object of type stem.

Примечание.При использовании R2016a или более ранней версии замените каждый вызов объекта эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

Примечание: audioDeviceWriter Системная object™ не поддерживается в MATLAB Online.

В этом примере показано, как уменьшить частоту дискретизации звукового сигнала на 1/2 и воспроизвести его.

afr = dsp.AudioFileReader('OutputDataType',...
  'single');
num = designMultirateFIR(1,2);
adw = audioDeviceWriter(22050/2);
firdecim = dsp.FIRDecimator(2,num);

while ~isDone(afr)
     frame = afr();
     y = firdecim(frame);
     adw(y);
end

release(afr); 
pause(0.5);
release(adw);

Подробнее

развернуть все

Алгоритмы

Децимационный фильтр КИХ эффективно реализуется с использованием полифазной структуры. Дополнительные сведения о многофазных фильтрах см. в разделе Многофазные субфильтры.

Для получения полифазной структуры начните с передаточной функции фильтра FIR:

H (z) = b0 + b1z 1 +... + bNz − N

N + 1 - длина фильтра FIR.

Это уравнение можно изменить следующим образом:

H (z) = (b0+bMz−M+b2Mz−2M +. +bN−M+1z− (N−M+1)) +z−1 (b1+bM+1z−M+b2M+1z−2M +. +bN−M+2z− (N−M+1)) + ⋮z− (M−1) (bM−1+b2M−1z−M+b3M−1z−2M +. +bNz− (N−M+1))

M - количество многофазных компонентов, и его значение равно указанному коэффициенту прореживания.

Это уравнение можно записать следующим образом:

H (z) = E0 (zM) + z 1E1 (zM) +... + z (M − 1) EM − 1 (zM)

E0 (zM), E1 (zM),..., EM-1 (zM) - полифазные компоненты КИХ-фильтра Н (z).

Концептуально децимационный фильтр КИХ содержит фильтр КИХ нижних частот, за которым следует понижающий фильтр.

Замените H (z) многофазным представлением.

Вот многоскоростная благородная идентичность для прореживания.

Применение благородного идентификатора для прореживания перемещает операцию понижающей дискретизации на перед операцией фильтрации. Это перемещение позволяет фильтровать сигнал с меньшей скоростью.

Можно заменить задержки и коэффициент прореживания на входе коммутатором. Переключатель запускается на первой ветви 0 и перемещается в направлении против часовой стрелки, как показано на этой диаграмме. Накопитель на выходе принимает обработанные входные выборки от каждой ветви полифазной структуры и накапливает эти обработанные выборки до тех пор, пока переключатель не перейдет к ветви 0. Когда коммутатор переходит в ветвь 0, накопитель выдает накопленное значение.

Когда доставляется первая входная выборка, коммутатор подает этот вход в ветвь 0, и прореживатель вычисляет первое выходное значение. По мере поступления большего количества входных выборок переключатель перемещается в направлении против часовой стрелки через ветви M − 1, M − 2 и вплоть до ветви 0, доставляя по одной выборке за раз в каждую ветвь. Когда коммутатор переходит в ветвь 0, прореживатель выводит следующий набор выходных значений. Этот процесс продолжается по мере поступления данных. Каждый раз, когда коммутатор приходит в ветвь 0, прореживатель выдает y [m]. Прореживатель эффективно выводит одну выборку на каждую M выборок, которые он получает. Следовательно, частота дискретизации на выходе фильтра децимации КИХ равна fs/M.

Расширенные возможности

.

Преобразование с фиксированной точкой
Проектирование и моделирование систем с фиксированной точкой с помощью Designer™ с фиксированной точкой.

Представлен в R2012a