dsp.CICCompensationDecimator

Компенсируйте CIC децимирующий фильтр с помощью конечной импульсной характеристики дециматора

Описание

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

Чтобы компенсировать недостатки CIC-фильтра с помощью конечной импульсной характеристики:

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

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

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

ciccompdec = dsp.CICCompensationDecimator(decim) возвращает дециматор компенсации CIC Системного объекта с DecimationFactor значение свойства установлено в decim.

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

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

пример

ciccompdec = dsp.CICCompensationDecimator(___,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-фильтра как положительный целочисленный скаляр.

Типы данных: 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

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

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

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

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

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

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

Синтаксис

Описание

пример

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

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

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

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

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

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

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

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

Отфильтрованный и понижающий дискретизацию сигнал, возвращенный как вектор или матрица. Поскольку <reservedrangesplaceholder7> × <reservedrangesplaceholder6>    ввел матрицу   , результат - выходная матрица <reservedrangesplaceholder5> × <reservedrangesplaceholder4>, где 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 компенсационный дециматор. Задайте коэффициент децимации, равный 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')

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(CICCompDecim,'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 дециматора, имеющего шесть секций и коэффициент десятикратного уменьшения 6.

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

Создайте декиматор компенсации. Задайте коэффициент десятикратного уменьшения 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');

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 Decimator: Quantized, CIC Decimator: Reference, CIC Compensation Decimator, Overall Response: Quantized, Overall Response: Reference.

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