exponenta event banner

dsp. CICCompensationDecimator

Скомпенсировать фильтр прореживания CIC с помощью дециматора FIR

Описание

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

Для компенсации недостатков фильтра CIC с помощью дециматора FIR:

  1. Создать dsp.CICCompensationDecimator и задайте его свойства.

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

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

Создание

Описание

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

ciccompdec = dsp.CICCompensationDecimator(decim) возвращает объект CIC compensation decimator System с DecimationFactor свойство имеет значение decim.

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

ciccompdec = dsp.CICCompensationDecimator(cic,decim) возвращает объект CIC compensation decimator System, 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

Укажите коэффициент прореживания объекта compensator System как положительный целочисленный скаляр.

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

Это свойство невозможно настроить.

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

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

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

Синтаксис

Описание

пример

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

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

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

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

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

Типы данных: 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
Поддержка комплексного номера: Да

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

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

freqzЧастотная характеристика объекта системы дискретно-временного фильтра
fvtoolВизуализация частотной характеристики фильтров DSP
infoСведения об объекте filter System
costОценка затрат на внедрение фильтра Объект системы
coeffsВозвращает коэффициенты объекта System фильтра в структуре
polyphaseМногофазное разложение многоскоростного фильтра
generatehdlСоздание кода HDL для квантованного фильтра DSP (требуется кодер HDL конструкции фильтра)
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Проектирование дециматора компенсации 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 (start2)] N

R, D и N - коэффициент изменения скорости, дифференциальная задержка и количество секций фильтра CIC, соответственно.

После прореживания ответ cic имеет вид:

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

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

Hciccomp (λ) = [RDsin (ω2R) sin (Dω2)] Nfor ω≤ωp<π

где startp - частота полосы пропускания компенсационного фильтра CIC.

Обратите внимание, что при ω/2R ≪ δ предыдущее уравнение для Hciccomp (λ) можно упростить, используя тот факт, что sin (x) x:

Hciccomp (λ) [(Dω2) sin ( Dω2 )] N = [sinc (Dω2)] Nfor ω≤ωp<π

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

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

.
Представлен в R2014b