dsp.CICCompensationInterpolator

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

Описание

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

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

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

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

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

Создание

Описание

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 Используя Системные объекты.

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

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

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

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

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

Синтаксис

Описание

пример

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