exponenta event banner

dsp. CICCompensationInterpolator

Компенсация фильтра интерполяции CIC с помощью интерполятора FIR

Описание

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

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

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

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

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

Создание

Описание

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

ciccompint = dsp.CICCompensationInterpolator(interp) возвращает объект CIC compensation interpolator System, ciccompint, с InterpolationFactor свойство имеет значение interp.

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

ciccompint = dsp.CICCompensationInterpolator(cic,interp) возвращает объект CIC compensation interpolator System, 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

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

Типы данных: 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 = ciccompint(x) выводит увеличенные и отфильтрованные значения, y, входного сигнала, x.

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

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

Ввод данных, заданный как вектор или матрица. Объект System обрабатывает   входную матрицу 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
Поддержка комплексного номера: Да

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

Чтобы использовать функцию объекта, укажите объект 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, частоту полосы пропускания для 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 (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