dsp. CICCompensationInterpolator

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

Описание

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

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

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

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

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

Создание

Синтаксис

ciccompint = dsp.CICCompensationInterpolator
ciccompint = dsp.CICCompensationInterpolator(interp)
ciccompint = dsp.CICCompensationInterpolator(cic)
ciccompint = dsp.CICCompensationInterpolator(cic,interp)
ciccompint = dsp.CICCompensationInterpolator(___,Name,Value)

Описание

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

ciccompint = dsp.CICCompensationInterpolator(interp) возвращает Системный объект интерполятора компенсации CIC, ciccompint, с набором свойств InterpolationFactor к interp.

ciccompint = dsp.CICCompensationInterpolator(cic) возвращает Системный объект интерполятора компенсации CIC, ciccompint, с CICRateChangeFactor, CICNumSections и свойствами CICDifferentialDelay, заданными в Системном объекте dsp.CICInterpolator cic.

ciccompint = dsp.CICCompensationInterpolator(cic,interp) возвращает Системный объект интерполятора компенсации CIC, ciccompint, с CICRateChangeFactor, CICNumSections и свойствами CICDifferentialDelay, заданными в Системном объекте dsp.CICInterpolator cic и набор свойств InterpolationFactor к interp.

пример

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

Свойства

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

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция 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-фильтра, компенсируемого как положительный целочисленный скаляр. Значение по умолчанию равняется 2.

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

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

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

Зависимости

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

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

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

Типы данных: 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 = ciccompint(x)

Описание

пример

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

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

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

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

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

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

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

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

Сверхдискретизированный и отфильтрованный сигнал, возвращенный как вектор или матрица. Для Ki × матрица входа N, результатом является Ko × выходная матрица N, где Ko = Ki × L и L является коэффициентом интерполяции.

Типы данных: 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. Задайте коэффициент интерполяции, чтобы быть 2, частота полосы пропускания, чтобы быть 200 Гц, частота полосы задерживания, чтобы быть 500 Гц, и входная частота дискретизации, чтобы быть 600 Гц.

fs = 600;
fPass = 200;
fStop = 500;

CICCompInterp = dsp.CICCompensationInterpolator('InterpolationFactor',2,'PassbandFrequency',fPass, ...
    'StopbandFrequency',fStop,'SampleRate',fs);

Постройте импульсный ответ. Нулевой коэффициент порядка задерживается 6 выборок, который равен групповой задержке фильтра.

fvtool(CICCompInterp,'Analysis','impulse')

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

fvtool(CICCompInterp,'Analysis','freq')

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

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

CICInterp = dsp.CICInterpolator('InterpolationFactor',16, ...
    'NumSections',6);

Создайте интерполятор компенсации. Задайте коэффициент интерполяции 2, входную частоту дискретизации 600 Гц, частоту полосы пропускания 100 Гц и частоту полосы задерживания 250 Гц. Установите минимальное затухание компонентов псевдонима в полосе задерживания составлять по крайней мере 80 дБ.

fs = 600;
fPass = 100;
fStop = 250;
ast = 80;

CICCompInterp = dsp.CICCompensationInterpolator(CICInterp, ...
    'InterpolationFactor',2,'PassbandFrequency',fPass, ...
    'StopbandFrequency',fStop,'StopbandAttenuation',ast, ...
    'SampleRate',fs);

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

FC = dsp.FilterCascade(CICCompInterp, CICInterp);

f = fvtool(CICCompInterp,CICInterp,FC, ...
    'Fs', [fs*2 fs*16*2 fs*16*2]);

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

Примените проект к случайному входному сигналу с 1000 выборками.

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

y = fi(zeros(32000,1),1,32,20);
for ind = 1:10
    x2 = CICCompInterp(x());
    y(((ind-1)*3200)+1:ind*3200) = CICInterp(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