dsp.DCBlocker

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

Описание

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

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

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

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

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

Создание

Описание

пример

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-кода.

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

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

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

Зависимости

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

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

Зависимости

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

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

Зависимости

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

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

Синтаксис

Описание

пример

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 использует метод фильтрации lowpass CIC, чтобы оценить смещение 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