dsp.FIRDecimator

Многофазный КИХ decimator

Описание

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

КИХ-фильтр фильтрует данные в каждом канале входа с помощью КИХ-фильтра прямой формы. downsampler, который следует, прореживает каждый канал отфильтрованных данных путем отбрасывания 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 возвращает КИХ decimator, firdecim, который применяет КИХ-фильтр с частотой среза 0.4*pi радианы/выборка к входу и прореживают фильтр, выведенный фактором 2.

firdecim = dsp.FIRDecimator(decimFactor,num) возвращает КИХ decimator с DecimationFactor с целочисленным знаком набор свойств к decimFactor и Numerator набор свойств к num.

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

Свойства

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

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

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

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

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

Типы данных: 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, …, миллиард] представляет вектор из коэффициентов фильтра.

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

Зависимости

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

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

Задайте реализацию КИХ-фильтра как любой Direct form или Direct form transposed.

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

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

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

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

Для получения дополнительной информации смотрите Полную точность для Fixed-Point System Objects and Set System Object Fixed-Point Properties.

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

Зависимости

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

  • 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 свойство.

Word и дробные длины содействующего типа данных в виде автосо знаком numerictype (Fixed-Point Designer) с размером слова 16 и дробной длиной 15.

Зависимости

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

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

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

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

  • 'Custom' – Тип выходных данных продукта задан как пользовательский числовой тип через CustomProductDataType свойство.

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

Зависимости

Это свойство применяется, когда вы устанавливаете FullPrecisionOverride к false.

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

Зависимости

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

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

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

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

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

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

Зависимости

Это свойство применяется, когда вы устанавливаете FullPrecisionOverride к false.

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

Зависимости

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

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

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

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

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

  • 'Custom' – Тип выходных данных задан как пользовательский числовой тип через CustomOutputDataType свойство.

Зависимости

Это свойство применяется, когда вы устанавливаете FullPrecisionOverride к false.

Word и дробные продолжительности выходных данных вводит в виде числового типа автосо знаком с размером слова 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).

В этом примере показано, как десятикратно уменьшить сумму синусоид с угловыми частотами пи/4 и 2pi/3 радианов/выборки на коэффициент два. Чтобы предотвратить искажение, КИХ decimator использует сглаживающийся фильтр lowpass, который отфильтровывает 2pi/3 компонент радианов/выборки перед субдискретизацией. Чтобы спроектировать такой фильтр, используйте designMultirateFIR функция.

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

Десятикратно уменьшите синусоидальный сигнал с помощью этого decimator.

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);

Больше о

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

Алгоритмы

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

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

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, сопровождаемый downsampler.

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

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

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

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

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

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

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

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