dsp.FIRInterpolator

Многофазный КИХ-интерполятор

Описание

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

upsampler сверхдискретизировал каждый канал входа к более высокому уровню путем вставки L –1 нуль между выборками. КИХ-фильтр прямой формы, который следует, фильтрует каждый канал сверхдискретизированных данных. Получившийся сигнал дискретного времени имеет частоту дискретизации, которая является L раз от исходной частоты дискретизации.

FIR interpolator contains an upsampler followed by an anti-imaging FIR filter.

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

Сверхдискретизировать вход:

  1. Создайте dsp.FIRInterpolator объект и набор его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.

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

Создание

Описание

firinterp = dsp.FIRInterpolator возвращает КИХ-интерполятор, firinterp, который сверхдискретизировал входной сигнал на коэффициент 3 и применяет КИХ-фильтр, чтобы интерполировать выход.

пример

firinterp = dsp.FIRInterpolator(interpFactor,num) возвращает КИХ-интерполятор с InterpolationFactor с целочисленным знаком набор свойств к interpFactor и Numerator набор свойств к num.

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

Свойства

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

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

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

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

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

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

КИХ-содействующий источник фильтра в виде также:

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

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

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

H(z)=n=0Nb(n)zn

Вектор b = [b (0), b (1), …, b (N)] представляет вектор из коэффициентов фильтра.

Чтобы действовать как эффективный реконструкционный фильтр, коэффициенты обычно соответствуют фильтру lowpass с нормированной частотой среза, не больше, чем обратная величина InterpolationFactorИспользование designMultirateFIR спроектировать такой фильтр. В более общем плане любой комплексный полосовой фильтр может использоваться. Для примера смотрите Дважды Частоту дискретизации Используя КИХ-Интерполятор.

Коэффициенты фильтра масштабируются значением InterpolationFactor свойство прежде, чем отфильтровать сигнал. Сформировать L многофазные подфильтры, Numerator добавлен с нулями при необходимости.

Зависимости

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

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

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

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

  • 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 = firinterp(x) интерполирует входной сигнал x по первому измерению и выходным параметрам сверхдискретизированные и отфильтрованные значения, y.

y = firinterp(x,num) использует КИХ-фильтр, num, интерполировать входной сигнал. Эта настройка допустима только когда 'NumeratorSource' свойство установлено в 'Input port'.

Входные параметры

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

Ввод данных в виде вектора или матрицы. P-by-Q входная матрица обработан как Q независимые каналы, и Системный объект интерполирует каждый канал по первой размерности и генерирует P*L-by-Q выходная матрица, где L является коэффициентом интерполяции.

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

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

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

Зависимости

Этот вход принят только когда 'NumeratorSource' свойство установлено в 'Input port'.

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

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

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

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

Типы данных: 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Сбросьте внутренние состояния Системного объекта

Примеры

свернуть все

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

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

В этом примере показано, как удвоить частоту дискретизации звукового сигнала от 22,05 кГц до 44,1 кГц и проигрывать аудио.

afr = dsp.AudioFileReader('OutputDataType',...
   'single');
adw = audioDeviceWriter(44100);
L = 2;
num = designMultirateFIR(L,1);
firInterp = dsp.FIRInterpolator(L,num);
 
while ~isDone(afr)
     frame = afr();
     y = firInterp(frame);
     adw(y);
end

pause(1);
release(afr); 
release(adw);

Алгоритмы

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

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

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

N +1 является длиной КИХ-фильтра.

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

H(z)=(b0+bLzL+b2Lz2L+..+bNL+1z(NL+1))+z1(b1+bL+1zL+b2L+1z2L+..+bNL+2z(NL+1))+z(L1)(bL1+b2L1zL+b3L1z2L+..+bNz(NL+1))

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

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

H(z)=E0(zL)+z1E1(zL)+...+z(L1)EL1(zL)

E0(zL), E1(zL)..., EL-1(zL) является многофазными компонентами КИХ-фильтра H (z).

Концептуально, КИХ-фильтр интерполяции содержит upsampler, сопровождаемый КИХ фильтр lowpass H (z).

FIR interpolator contains an upsampler followed by an anti-imaging FIR filter.

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

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

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

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

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

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

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