dsp.CICCompensationDecimator

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

Описание

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

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

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

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

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

Создание

Описание

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-битными коэффициентами и дробной длиной, определенной на основе содействующих значений, чтобы дать самую лучшую точность.

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

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

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

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

Синтаксис

Описание

пример

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