dsp. DCBlocker

Блокируйте компонент DC (смещение) от входного сигнала

Описание

Система dsp.DCBlocker object™ удаляет смещение DC из каждого канала (столбец) входного сигнала. Операция запускается в зависимости от времени, чтобы постоянно оценить и удалить смещение DC.

Блокировать компонент DC входного сигнала:

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

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

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

Создание

Синтаксис

dcblker = dsp.DCBlocker
dcblker = dsp.DCBlocker(Name,Value)

Описание

пример

dcblker = dsp.DCBlocker создает Системный объект блокировщика DC, dcblker, чтобы блокировать компонент DC от каждого канала (столбец) входного сигнала.

пример

dcblker = dsp.DCBlocker(Name,Value) создает Системный объект блокировщика DC, dcblker, с каждым заданным набором свойств к заданному значению. Заключите каждое имя свойства в одинарные кавычки.

Пример: dcblker = dsp. DCBlocker ('Алгоритм', 'КИХ')

Свойства

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

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

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Алгоритм для оценки смещения DC, заданного как одно из следующего:

  • 'IIR' – Объект использует рекурсивную оценку на основе узкого, lowpass эллиптический фильтр. Наборы свойств Порядка порядок фильтра и наборы свойств NormalizedBandwidth его пропускная способность. Этот алгоритм обычно использует меньше памяти, чем КИХ-алгоритм и более эффективен.

  • 'FIR' – Объект использует нерекурсивную оценку скользящего среднего значения на основе конечного числа прошлых входных выборок. Наборы свойств Длины количество выборок. КИХ-фильтр имеет линейный фазовый отклик и не вызывает искажения фазы к сигналу. БИХ-фильтр требует меньшей памяти и более эффективен, чтобы реализовать.

  • 'CIC' – Объект использует CIC decimator с фактором десятикратного уменьшения 1, чья дифференциальная задержка вычисляется с помощью свойства NormalizedBandwidth. Это использует два раздела, чтобы гарантировать, что первое затухание бокового лепестка на по крайней мере 25 дБ ниже основного лепестка фильтра. Этот алгоритм требует входных параметров фиксированной точки и может использоваться для генерации HDL-кода. Для получения дополнительной информации смотрите генерацию HDL-кода.

  • 'Subtract mean' – Объект вычисляет средние значения столбцов входной матрицы и вычитает средние значения из входа. Этот метод не сохраняет состояние между входными параметрами.

Можно визуализировать БИХ, КИХ и ответы CIC при помощи функции fvtool.

Нормированная пропускная способность БИХ или CIC-фильтра, заданного как действительный скаляр, больше, чем 0 или меньше, чем 1. Нормированная пропускная способность используется, чтобы оценить компонент DC входного сигнала.

Зависимости

Это свойство применяется только, когда вы устанавливаете свойство Algorithm на 'IIR' или 'CIC'.

Порядок lowpass БИХ эллиптический фильтр, который используется, чтобы оценить уровень DC, заданный как целое число, больше, чем 3.

Зависимости

Это свойство применяется только, когда вы устанавливаете свойство Algorithm на 'IIR'.

Количество прошлых входных выборок, используемых в КИХ-алгоритме, чтобы оценить рабочее среднее значение, заданное как положительное целое число.

Зависимости

Это свойство применяется только, когда вы устанавливаете свойство Algorithm на 'FIR'.

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

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

dcblkerOut = dcblker(input)

Описание

пример

dcblkerOut = dcblker(input) удаляет компонент DC из каждого канала (столбец) входа и возвращает выходной параметр.

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

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

Ввод данных к объекту блокировщика DC, заданному как вектор, матрица или N-D массив.

Пример: t = (0:0.001:100)'; x = sin (30*pi*t) + 1;

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

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

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

Сигнал с удаленным компонентом DC, возвратился как вектор, матрица или N-D массив. Выходные размерности совпадают с входными размерностями.

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

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

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

release(obj)

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

fvtoolВизуализируйте частотную характеристику фильтров DSP
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

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

Примечание: Если вы используете R2016a или ранее, заменяете каждый вызов объекта с эквивалентным синтаксисом шага. Например, obj (x) становится шагом (obj, x).

Удалите компонент DC входного сигнала с помощью БИХ, КИХ, и вычтите средние алгоритмы оценки.

Создайте сигнал, состоявший из тона на 15 Гц, тона на 25 Гц и смещения DC.

t = (0:0.001:100)';
x = sin(30*pi*t) + 0.33*cos(50*pi*t) + 1;

Создайте три объекта блокировщика DC для трех алгоритмов оценки.

dc1 = dsp.DCBlocker('Algorithm','IIR','Order', 6);
dc2 = dsp.DCBlocker('Algorithm','FIR','Length', 100);
dc3 = dsp.DCBlocker('Algorithm','Subtract mean');

В течение каждой секунды времени передайте входной сигнал через блокировщики DC. Путем реализации блокировщиков DC с 1 вторым шагом можно наблюдать различия во времени сходимости.

for idx = 1 : 100
    range = (1:1000) + 1000*(idx-1);
    y1 = dc1(x(range));          % IIR estimate
    y2 = dc2(x(range));          % FIR estimate
    y3 = dc3(x(range));          % Subtract mean
end

Постройте входные и выходные данные для трех блокировщиков DC в течение первой секунды времени и покажите среднее значение для каждого сигнала. Средние значения для трех типов алгоритма показывают, что FIR и алгоритмы Subtract mean сходятся более быстро.

plot(t(1:1000),x(1:1000), ...
    t(1:1000),y1, ...
    t(1:1000),y2, ...
    t(1:1000),y3);
xlabel('Time (sec)')
ylabel('Amplitude')
legend(sprintf('Input DC:%.3f',mean(x)), ...
    sprintf('IIR DC:%.3f',mean(y1)), ...
    sprintf('FIR DC:%.3f',mean(y2)), ...
    sprintf('Subtract mean DC:%.3f',mean(y3)));

Примечание: Если вы используете R2016a или ранее, заменяете каждый вызов объекта с эквивалентным синтаксисом шага. Например, obj (x) становится шагом (obj, x).

Сравните спектр входного сигнала со смещением DC к спектру того же сигнала после применения блокировщика DC. Позвольте блокировщику DC использовать алгоритм оценки FIR.

Создайте входной сигнал, состоявший из трех тонов, и это имеет смещение DC 1. Установите частоту дискретизации на 1 кГц и установите длительность сигнала на 100 секунд.

fs = 1000;
t = (0:1/fs:100)';
x = sin(30*pi*t) + 0.67*sin(40*pi*t) + 0.33*sin(50*pi*t) + 1;

Создайте объект блокировщика DC, который использует КИХ-алгоритм, чтобы оценить смещение DC.

dcblker = dsp.DCBlocker('Algorithm','FIR','Length',100);

Создайте спектр анализатор с набором блоков питания к dBW и частотному диапазону [-30 30], чтобы отобразить частотную характеристику входного сигнала. Используя функцию clone, создайте второй спектр анализатор, чтобы отобразить ответ вывода. Затем используйте свойство Title спектра анализаторы, чтобы маркировать их.

hsa = dsp.SpectrumAnalyzer('SampleRate',fs, ...
    'PowerUnits','dBW','FrequencySpan','Start and stop frequencies',...
    'StartFrequency',-30,'StopFrequency',30,'YLimits',[-200 20],...
    'Title','Signal Spectrum');

hsb = clone(hsa);
hsb.Title = 'Signal Spectrum After DC Blocker';

Передайте входной сигнал, x, через блокировщик DC, чтобы сгенерировать выходной сигнал, y.

y = dcblker(x);

Используйте первый спектр анализатор, чтобы отобразить характеристики частоты входного сигнала. Тоны в 15, 20, и 25 Гц, и компонент DC, явно видимы.

hsa(x)

Используйте второй спектр анализатор, чтобы отобразить характеристики частоты выходного сигнала. Компонент DC был удален.

hsb(y)

Примечание: Если вы используете R2016a или ранее, заменяете каждый вызов объекта с эквивалентным синтаксисом шага. Например, obj (x) становится шагом (obj, x).

Удалите смещение DC из сигнала фиксированной точки при помощи блокировщика DC. Блокировщик DC использует CIC lowpass фильтрация метода, чтобы оценить смещение DC.

Сгенерируйте случайные двоичные данные.

data = randi([0 1],1.2e5,1);

Создайте 64-QAM Системный объект модулятора и модулируйте данные путем выполнения его алгоритма.

mod = comm.RectangularQAMModulator('ModulationOrder',64, ...
                                    'BitInput',true);
modOut = mod(data);

Определите контрольные точки совокупности для модулятора.

cRefPts = constellation(mod);

Добавьте AWGN в модулируемый сигнал при помощи соответствующего Системного объекта и выполнения его алгоритма.

noise = comm.AWGNChannel('EbNo', 14.75, ...
                          'BitsPerSymbol', 6, ...
                          'SignalPower', 42, ...
                          'SamplesPerSymbol', 1);
noisyOut = noise(modOut);

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

constDiag = comm.ConstellationDiagram('Name','Noisy Constellation',...
    'ReferenceConstellation',cRefPts, ...
    'XLimits',[-8 8],'YLimits',[-8 8]);
constDiag(noisyOut)

Добавьте смещение DC 1 к модулируемому сигналу.

noisyOut = noisyOut + 1;

Отобразите спектр сигнала. Скачок на уровне 0 кГц происходит из-за введенного смещения.

specAna = dsp.SpectrumAnalyzer(...
  'YLimits',[-40,40], ...
  'Title','Noisy Spectrum with DC Offset');
specAna(noisyOut);

Просмотрите эффект смещения DC на совокупности. Совокупность переключила один модуль направо.

constDiag(noisyOut)
constDiag.Name = 'Noisy Constellation with DC Offset';

Преобразуйте сигнал с шумом в объект фиксированной точки со знаком, который имеет 16-битный размер слова и 11-битную дробную длину.

noisyOut = fi(noisyOut,1,16,11);

Удалите смещение путем создания объекта блокировщика DC. Объект использует алгоритм CIC, чтобы оценить смещение DC.

dcblker = dsp.DCBlocker('Algorithm','CIC');

Визуализируйте частотную характеристику CIC оценка фильтра.

fvtool(dcblker)

Передайте смещение, сигнал с шумом через блокировщик DC и преобразуйте его вывод в двойное.

dcBlockerOutFxP = dcblker(noisyOut);
dcBlockerOut = double(dcBlockerOutFxP);

Постройте спектр сигнала, чтобы показать эффект удаления смещения DC. Скачок на уровне 0 кГц был удален.

specAna(dcBlockerOut);
specAna.Title = 'Noisy Spectrum with DC Removed';

Постройте совокупность и проверьте, что сигнал переключил назад налево.

constDiag(dcBlockerOut)
constDiag.Name = 'Noisy Constellation with DC Removed';

Чтобы видеть эффекты удаления смещения DC, отличайтесь значение свойства NormalizedBandwidth в объекте блокировщика DC.

Алгоритмы

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

Блокировщик DC вычитает компонент DC из входного сигнала. Можно оценить компонент DC при помощи БИХ, КИХ, CIC, или вычесть средний алгоритм.

Ссылки

[1] Nezami, M. “Оценка производительности Основополосных Алгоритмов для Прямого Преобразования Тактическое программное обеспечение Заданные Получатели: Исправление Неустойчивости I/Q, Отклонение Изображений, Удаление DC и Формирование каналов”. MILCOM, 2002.

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

Смотрите также

Функции

Системные объекты

Блоки

Введенный в R2014a