dsp.FIRDecimator

Полифазная конечная импульсная характеристика дециматор

Описание

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

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

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

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

Чтобы повторно отобразить входные входы вектора или матрицы по первой размерности:

  1. Создайте dsp.FIRDecimator Объекту и установите его свойства.

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

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

При определенных условиях этот системный объект также поддерживает генерацию кода SIMD. Для получения дополнительной информации смотрите Генерация кода.

Создание

Описание

пример

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

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

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

Свойства

расширить все

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

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

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

Источник коэффициента конечной импульсной характеристики, заданный как:

  • 'Property' - Коэффициенты числителя заданы через Numerator свойство.

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

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

H(z)=l=0Nblzl

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

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

Зависимости

Это свойство применяется при NumeratorSource установлено в 'Property'.

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

Укажите реализацию конечной импульсной характеристики следующим образом 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'

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

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

  • 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) использует конечную импульсную характеристику фильтр, 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
Поддержка комплексного числа: Да

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

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

release(obj)

расширить все

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

Примеры

свернуть все

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

Этот пример показов, как децимировать сумму синусоид с угловыми частотами pi/4 и 2pi/3 радианов/выборки в два раза. Чтобы предотвратить сглаживание, конечную импульсную характеристику дециматор использует сглаживающий lowpass фильтр, который отфильтровывает компонент 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).

Примечание: The 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);

Подробнее о

расширить все

Алгоритмы

Децимирующий фильтр конечной импульсной характеристики реализован эффективно с использованием структуры полифазы. Для получения дополнительной информации о полифазных фильтрах смотрите Polyphase Subfilters.

Чтобы вывести полифазную структуру, начните с передаточной функции конечной импульсной характеристики:

H(z)=b0+b1z1+...+bNzN

N + 1 - длина конечной импульсной характеристики фильтра.

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

H(z)=(b0+bMzM+b2Mz2M+..+bNM+1z(NM+1))+z1(b1+bM+1zM+b2M+1z2M+..+bNM+2z(NM+1))+z(M1)(bM1+b2M1zM+b3M1z2M+..+bNz(NM+1))

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

Можно записать это уравнение как:

H(z)=E0(zM)+z1E1(zM)+...+z(M1)EM1(zM)

E0 (zM), E1 (zM),..., EM-1 (zM) являются полифазными компонентами конечной импульсной характеристики H (z).

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

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

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

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

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

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

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

.

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

Введенный в R2012a