dsp. CICCompensationDecimator

Компенсируйте децимирующий фильтр CIC с помощью КИХ decimator

Описание

Можно компенсировать недостатки CIC decimator, а именно, его свисание полосы пропускания и широкая область перехода, следующим это с компенсацией decimator. Эта Система object™ позволяет вам разработать и использовать такой фильтр.

Компенсировать недостатки CIC-фильтра с помощью КИХ decimator:

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

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

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

Создание

Синтаксис

ciccompdec = dsp.CICCompensationDecimator
ciccompdec = dsp.CICCompensationDecimator(decim)
ciccompdec = dsp.CICCompensationDecimator(cic)
ciccompdec = dsp.CICCompensationDecimator(cic,decim)
ciccompdec = dsp.CICCompensationDecimator(___,Name,Value)

Описание

ciccompdec = dsp.CICCompensationDecimator возвращает Системный объект, ciccompdec, который применяет КИХ decimator к каждому каналу входного сигнала. Используя свойства объекта, децимирующий фильтр может быть разработан, чтобы компенсировать предыдущий CIC-фильтр.

ciccompdec = dsp.CICCompensationDecimator(decim) возвращает компенсацию CIC decimator Системный объект, с набором свойств DecimationFactor к decim.

ciccompdec = dsp.CICCompensationDecimator(cic) возвращает компенсацию CIC decimator Системный объект, с CICRateChangeFactor, CICNumSections и свойствами CICDifferentialDelay, заданными в Системном объекте dsp.CICDecimator, cic.

ciccompdec = dsp.CICCompensationDecimator(cic,decim) возвращает компенсацию CIC decimator Системный объект, ciccompdec, с CICRateChangeFactor, CICNumSections и свойствами CICDifferentialDelay, заданными в Системном объекте dsp.CICDecimator cic и набор свойств DecimationFactor к decim.

пример

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

Свойства

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

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

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

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

Задайте дифференциальную задержку CIC-фильтра, компенсируемого как положительный целочисленный скаляр.

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

Задайте количество разделов CIC-фильтра, компенсируемого как положительный целочисленный скаляр.

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

Задайте фактор изменения уровня CIC-фильтра, компенсируемого как положительный целочисленный скаляр.

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

Задайте фактор десятикратного уменьшения Системного объекта компенсатора как положительный целочисленный скаляр.

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

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

Задайте порядок фильтра компенсатора десятикратного уменьшения как положительный целочисленный скаляр.

Зависимости

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

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

Задайте частоту ребра полосы пропускания как положительный действительный скаляр, выраженный в герц. PassbandFrequency должен быть меньше, чем Fs/2, где Fs является входной частотой дискретизации.

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

Задайте пульсацию полосы пропускания фильтра как положительный действительный скаляр, выраженный в децибелах.

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

Задайте входную частоту дискретизации как положительный действительный скаляр, выраженный в герц.

Типы данных: single | double

Задайте затухание полосы задерживания фильтра как положительный действительный скаляр, выраженный в децибелах.

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

Задайте частоту ребра полосы задерживания как положительный действительный скаляр, выраженный в герц. StopbandFrequency должен быть меньше, чем Fs/2, где Fs является входной частотой дискретизации.

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

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

Word и дробные длины коэффициентов, заданных как объект numerictype без знака или со знаком. Значение по умолчанию, numerictype(1,16) соответствует числовому текстовому объекту со знаком с 16-битными коэффициентами и дробной длиной, определенной на основе содействующих значений, чтобы дать самую лучшую точность.

Это свойство не является настраиваемым.

Размер слова вывода - то же самое как размер слова входа. Дробная продолжительность вывода вычисляется таким образом, что целый динамический диапазон вывода может быть представлен без переполнения. Для получения дополнительной информации о том, как дробная продолжительность вывода вычисляется, см. Правила Точности Фиксированной точки для Предотвращения Переполнения в КИХ-Фильтрах.

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

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

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

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

y = ciccompdecim(x)

Описание

пример

y = ciccompdecim(x) возвращает отфильтрованные и субдискретизируемые значения, y, входного сигнала, x.

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

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

Ввод данных, заданный как вектор или матрица. Системный объект обрабатывает Ki × матрица входа N как N независимые каналы, десятикратно уменьшая каждый канал по первой размерности.

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

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

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

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

Фильтрованный и субдискретизируемый сигнал, возвращенный как вектор или матрица. Для Ki × матрица входа N, результатом является Ko × выходная матрица N, где Ko = Ki / M и M является фактором десятикратного уменьшения.

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

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

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

release(obj)

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

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

Примеры

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

Разработайте компенсацию CIC decimator. Задайте фактор десятикратного уменьшения, чтобы быть 2, частота полосы пропускания, чтобы быть 4 кГц, частота полосы задерживания, чтобы быть 4,5 кГц, и входная частота дискретизации, чтобы быть 16 кГц.

fs = 16e3;
fPass = 4e3;
fStop = 4.5e3;

CICCompDecim = dsp.CICCompensationDecimator('DecimationFactor',2,'PassbandFrequency',fPass, ...
    'StopbandFrequency',fStop,'SampleRate',fs);

Постройте импульсный ответ. Групповая задержка фильтра 45.5.

fvtool(CICCompDecim,'Analysis','impulse')

Постройте значение и Фазовый отклик.

fvtool(CICCompDecim,'Analysis','freq')

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

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

CICDecim = dsp.CICDecimator('DecimationFactor',6, ...
    'NumSections',6);

Создайте компенсацию decimator. Задайте фактор десятикратного уменьшения 2, входную частоту дискретизации 16 кГц, частоту полосы пропускания 4 кГц и частоту полосы задерживания 4,5 кГц.

fs = 16e3;
fPass = 4e3;
fStop = 4.5e3;

CICCompDecim = dsp.CICCompensationDecimator(CICDecim, ...
    'DecimationFactor',2,'PassbandFrequency',fPass, ...
    'StopbandFrequency',fStop,'SampleRate',fs);

Визуализируйте частотную характеристику каскада. Нормируйте все ответы значения на 0 дБ.

filtCasc = dsp.FilterCascade(CICDecim,CICCompDecim);

f = fvtool(CICDecim, CICCompDecim, filtCasc, ...
    'Fs', [fs*6 fs fs*6]);

f.NormalizeMagnitudeto1 = 'on';
legend(f,'CIC Decimator','CIC Compensation Decimator', ...
    'Overall Response');

Примените проект к случайному входному сигналу с 1200 выборками. Сохраните подкошенный вывод по первому измерению y массива.

x = dsp.SignalSource(fi(rand(1200,1),1,16,15),'SamplesPerFrame',120);

y = fi(zeros(100,1),1,32,20);

for ind = 1:10
    x2 = CICDecim(x());
    y(((ind-1)*10)+1:ind*10,1) = CICCompDecim(x2);
end

Алгоритмы

Ответом CIC-фильтра дают:

Hcic(ω)=[sin(RDω2)sin(ω2)]N

R, D и N являются фактором изменения уровня, дифференциальной задержкой и количеством разделов CIC-фильтра, соответственно.

После десятикратного уменьшения cic ответ имеет form:okay

Hcic(ω)=[sin(Dω2)sin(ω2R)]N

Нормированная версия этого последнего ответа является той, которую должен компенсировать компенсатор CIC. Следовательно, ответ полосы пропускания компенсатора CIC должен принять следующую форму:

Hciccomp(ω)=[RDsin(ω2R)sin(Dω2)]Nдляωωp<π

где ω p является частотой полосы пропускания фильтра компенсации CIC.

Заметьте что, когда ω/2R ≪ π, предыдущее уравнение для Hciccomp (ω) может быть упрощено с помощью факта, которые sin (x) ≅ x:

Hciccomp(ω)[(Dω2)sin(Dω2)]N = [sinc(Dω2)]Nдляωωp<π

Это предыдущее уравнение является инверсией sinc приближение к истинному обратному ответу полосы пропускания CIC-фильтра.

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

Введенный в R2014b