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

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

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

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

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

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

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

Синтаксис

Описание

пример

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

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

расширить все

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

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

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

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

расширить все

Усиленный и отфильтрованный сигнал, возвращенный как вектор или матрица. Поскольку <reservedrangesplaceholder7> × <reservedrangesplaceholder6>    ввел матрицу   , результат - выходная матрица <reservedrangesplaceholder5> × <reservedrangesplaceholder4>, где Ko = <reservedrangesplaceholder2> × <reservedrangesplaceholder1> и 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')

Figure Filter Visualization Tool - Impulse Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Impulse Response contains an object of type stem.

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

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

Figure Filter Visualization Tool - Magnitude Response (dB) and Phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) and Phase Response contains an object of type line.

Примечание.Если вы используете 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');

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 5 objects of type line. These objects represent CIC Compensation Interpolator, CIC Interpolator: Quantized, CIC Interpolator: Reference, Overall Response: Quantized, Overall Response: Reference.

Примените проект к 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-ответ имеет форму: okay

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

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

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

где ω p - ширина полосы пропускания фильтра коррекции CIC.

Заметьте что, когда <reservedrangesplaceholder5>/2 <reservedrangesplaceholder4>  π, предыдущее уравнение для Hciccomp (<reservedrangesplaceholder2>) может быть упрощено, используя факт, которые грешат (<reservedrangesplaceholder1>) ≅ <reservedrangesplaceholder0>:

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

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

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

.
Введенный в R2014b
Для просмотра документации необходимо авторизоваться на сайте