Блокируйте компонент DC (смещение) от входного сигнала
Система dsp.DCBlocker
object™ удаляет смещение DC из каждого канала (столбец) входного сигнала. Операция запускается в зависимости от времени, чтобы постоянно оценить и удалить смещение DC.
Блокировать компонент DC входного сигнала:
Создайте объект dsp.DCBlocker
и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
dcblker = dsp.DCBlocker
dcblker = dsp.DCBlocker(Name,Value)
создает Системный объект блокировщика DC, dcblker
= dsp.DCBlockerdcblker
, чтобы блокировать компонент DC от каждого канала (столбец) входного сигнала.
создает Системный объект блокировщика DC, dcblker
= dsp.DCBlocker(Name,Value
)dcblker
, с каждым заданным набором свойств к заданному значению. Заключите каждое имя свойства в одинарные кавычки.
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release
разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).
Algorithm
— Алгоритм для оценки DC смещается'IIR'
(значение по умолчанию) | 'FIR'
| 'CIC'
| 'Subtract mean'
Алгоритм для оценки смещения DC, заданного как одно из следующего:
'IIR'
– Объект использует рекурсивную оценку на основе узкого, lowpass эллиптический фильтр. Наборы свойств Порядка порядок фильтра и наборы свойств NormalizedBandwidth его пропускная способность. Этот алгоритм обычно использует меньше памяти, чем КИХ-алгоритм и более эффективен.
'FIR'
– Объект использует нерекурсивную оценку скользящего среднего значения на основе конечного числа прошлых входных выборок. Наборы свойств Длины количество выборок. КИХ-фильтр имеет линейный фазовый отклик и не вызывает искажения фазы к сигналу. БИХ-фильтр требует меньшей памяти и более эффективен, чтобы реализовать.
'CIC'
– Объект использует CIC decimator с фактором десятикратного уменьшения 1, чья дифференциальная задержка вычисляется с помощью свойства NormalizedBandwidth. Это использует два раздела, чтобы гарантировать, что первое затухание бокового лепестка на по крайней мере 25 дБ ниже основного лепестка фильтра. Этот алгоритм требует входных параметров фиксированной точки и может использоваться для генерации HDL-кода. Для получения дополнительной информации смотрите генерацию HDL-кода.
'Subtract mean'
– Объект вычисляет средние значения столбцов входной матрицы и вычитает средние значения из входа. Этот метод не сохраняет состояние между входными параметрами.
Можно визуализировать БИХ, КИХ и ответы CIC при помощи функции fvtool
.
NormalizedBandwidth
— Нормированная пропускная способность lowpass БИХ или CIC-фильтра0.001
(значение по умолчанию) | действительный скаляр, больше, чем 0 и меньше чем 1Нормированная пропускная способность БИХ или CIC-фильтра, заданного как действительный скаляр, больше, чем 0 или меньше, чем 1. Нормированная пропускная способность используется, чтобы оценить компонент DC входного сигнала.
Это свойство применяется только, когда вы устанавливаете свойство Algorithm на 'IIR'
или 'CIC'
.
Order
— Порядок lowpass БИХ эллиптический фильтр6
(значение по умолчанию) | целое число, больше, чем 3Порядок lowpass БИХ эллиптический фильтр, который используется, чтобы оценить уровень DC, заданный как целое число, больше, чем 3.
Это свойство применяется только, когда вы устанавливаете свойство Algorithm на 'IIR'
.
Длина
Количество прошлых входных выборок используется в КИХ-алгоритме50
(значение по умолчанию) | положительное целое числоКоличество прошлых входных выборок, используемых в КИХ-алгоритме, чтобы оценить рабочее среднее значение, заданное как положительное целое число.
Это свойство применяется только, когда вы устанавливаете свойство Algorithm на 'FIR'
.
Для версий ранее, чем R2016b, используйте функцию step
, чтобы запустить алгоритм Системного объекта. Аргументы к step
являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.
Например, y = step(obj,x)
и y = obj(x)
выполняют эквивалентные операции.
dcblkerOut = dcblker(input)
удаляет компонент DC из каждого канала (столбец) входа и возвращает выходной параметр.dcblkerOut
= dcblker(input
)
входной параметр
Входной сигналВвод данных к объекту блокировщика DC, заданному как вектор, матрица или N-D массив.
Пример: t = (0:0.001:100)'; x = sin (30*pi*t) + 1;
Типы данных: single
| double
| int8
| int16
| int32
| fi
Поддержка комплексного числа: Да
dcblkerOut
— Сигнал с удаленным компонентом DCСигнал с удаленным компонентом DC, возвратился как вектор, матрица или N-D массив. Выходные размерности совпадают с входными размерностями.
Типы данных: single
| double
| int8
| int16
| int32
| fi
Поддержка комплексного числа: Да
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
fvtool | Визуализируйте частотную характеристику фильтров DSP |
Примечание: Если вы используете 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, или вычесть средний алгоритм.
Передайте входной сигнал через БИХ lowpass эллиптический фильтр.
Эллиптический БИХ-фильтр имеет пульсацию полосы пропускания 0,1 дБ и затухание полосы задерживания 60 дБ. Вы задаете нормированную пропускную способность и порядок фильтра.
Передайте входной сигнал через КИХ-фильтр, который использует нерекурсивное скользящее среднее значение от конечного числа прошлых входных выборок.
КИХ-коэффициенты фильтра даны как ones(1,Length)/Length
, где вы задаете Length
. КИХ-структура фильтра является прямой формой, я транспонировал структуру.
Передайте входной сигнал через CIC-фильтр. Поскольку CIC-фильтр усиливает сигнал, усиление фильтра оценено и вычтено из оценки DC.
Каскадный интегрально-гребенчатый (CIC) фильтр состоит из двух пар расчески интегратора. Эти пары помогают гарантировать, что пик первого бокового лепестка ответа фильтра ослабляется по крайней мере на 25 дБ относительно пика основного лепестка. Нормированная пропускная способность на 3 дБ используется, чтобы вычислить дифференциальную задержку. Задержка используется, чтобы определить усиление CIC-фильтра. Инверсия усиления фильтра используется в качестве множителя, который применяется к выводу CIC-фильтра. Это гарантирует, что совокупное усиление оценки DC составляет 0 дБ.
Следующее уравнение характеризует совокупный ответ значения фильтра и множителя:
Bnorm является нормированной пропускной способностью, таким образом что 0 <Bnorm <1.
M является дифференциальной задержкой выборок.
N является количеством разделов, равных 2.
Установите дифференциальную задержку, M, к самому маленькому целому числу, таким образом что |H(ejω) | <1 / √ 2. Если M известен, усиление CIC-фильтра вычисляется как MN. Поэтому, чтобы точно компенсировать усиление фильтра, множитель установлен в (1/M) N.
Вычислите среднее значение каждого столбца входного сигнала и вычтите среднее значение из входа. Например, если вход [1 2 3 4; 3 4 5 6], затем набор Блокировщика DC к этому режиму выходные параметры [-1 - 1 - 1 - 1; 1 1 1 1].
[1] Nezami, M. “Оценка производительности Основополосных Алгоритмов для Прямого Преобразования Тактическое программное обеспечение Заданные Получатели: Исправление Неустойчивости I/Q, Отклонение Изображений, Удаление DC и Формирование каналов”. MILCOM, 2002.
Указания и ограничения по применению:
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
Эта генерация HDL-кода поддержки объектов, если вам установили HDL Coder™. HDL Coder обеспечивает дополнительные параметры конфигурации, которые влияют на реализацию HDL и синтезируемую логику.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.