exponenta event banner

коммуникация. DPD

Цифровой предыстор

Описание

comm.DPD Система object™ применяет цифровую предыскаженность (DPD) к комплексному сигналу основной полосы частот, используя многочлен памяти для компенсации нелинейности в усилителе мощности. Дополнительные сведения см. в разделе Цифровая предистория.

Для предыскажения сигналов:

  1. Создать comm.DPD и задайте его свойства.

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

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

Создание

Описание

dpd = comm.DPD создает цифровой объект системы предыскажений для предыскажения сигнала.

пример

dpd = comm.DPD(Name,Value) задает свойства, используя одну или несколько пар имя-значение. Например, comm.DPD('PolynomialType','Cross-term memory polynomial') конфигурирует системный объект premistorter для предыскажения входного сигнала с помощью многочлена памяти с перекрестными членами. Заключите каждое имя свойства в кавычки.

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Полиномиальный тип, используемый для предыскажений, указывается как одно из следующих значений:

  • 'Memory polynomial' - Предысторирует входной сигнал, используя многочлен памяти без перекрестных терминов.

  • 'Cross-term memory polynomial' - Предысторирует входной сигнал, используя многочлен памяти с перекрестными членами.

Дополнительные сведения см. в разделе Цифровая предистория.

Коэффициенты памяти-многочлена, заданные как матрица. Число строк в матрице должно быть равно глубине памяти многочлена памяти.

  • Если PolynomialType является 'Memory polynomial', число столбцов в матрице - степень многочлена памяти.

  • Если PolynomialType является 'Cross-term memory polynomial'число столбцов в матрице должно быть равно m (n-1) + 1. m - глубина памяти многочлена, n - степень многочлена памяти.

Дополнительные сведения см. в разделе Цифровая предистория.

Типы данных: double
Поддержка комплексного номера: Да

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

Синтаксис

Описание

пример

out = dpd(in) предсказывает комплексный сигнал основной полосы частот, используя многочлен памяти для компенсации нелинейности в усилителе мощности.

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

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

Входной сигнал основной полосы частот, заданный как вектор столбца.

Типы данных: double
Поддержка комплексного номера: Да

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

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

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

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

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

release(obj)

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

stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Примените цифровое предыскажение (DPD) к входному сигналу усилителя мощности. Объект системы оценки коэффициента DPD использует захваченный сигнал, содержащий входные и выходные сигналы усилителя мощности, для определения матрицы коэффициентов предыскажений.

Загрузите файл, содержащий входные и выходные сигналы усилителя мощности.

load('commpowamp_dpd_data.mat','PA_input','PA_output')

Создайте системный объект оценки коэффициента DPD и системный объект фильтра передачи с увеличенным косинусом.

estimator = comm.DPDCoefficientEstimator( ...
    'DesiredAmplitudeGaindB',10, ...
    'PolynomialType','Memory polynomial', ...
    'Degree',5,'MemoryDepth',3,'Algorithm','Least squares');

rctFilt = comm.RaisedCosineTransmitFilter('OutputSamplesPerSymbol',2);

Оцените цифровые коэффициенты памяти и полинома предыскажений.

coef = estimator(PA_input,PA_output);

Создание системного объекта DPD с помощью coefоцененные коэффициенты, выводимые из устройства оценки коэффициента DPD, как для матрицы коэффициентов.

dpd = comm.DPD('PolynomialType','Memory polynomial', ...
    'Coefficients',coef);

Генерировать 2000 случайных символов и применять 16-QAM модуляцию к сигналу. Применить фильтрацию передачи с увеличенным косинусом к модулированному сигналу.

s = randi([0,15],2000,1);
u = qammod(s,16);
x = rctFilt(u);

Применение цифровой предыскажения к данным. Объект DPD System возвращает предварительно записанный сигнал для подачи на вход усилителя мощности.

y = dpd(x);

Эти примеры показывают формат матрицы коэффициентов для многочлена памяти DPD с использованием произвольно сформированной матрицы коэффициентов. Пример:

  • Создает цифровой объект предыскажений System, настроенный с использованием матрицы полиномиальных коэффициентов памяти с глубиной памяти, равной 3 и степень полинома, установленная как 5 состоит из случайных значений.

  • Предисторирует сигнал, используя матрицу коэффициента памяти-полинома.

  • Сравнивает один предварительно записанный выходной элемент с соответствующим входным элементом, который был вычислен вручную с использованием матрицы коэффициентов полинома памяти.

Создайте матрицу коэффициентов, представляющую предыскажатель с выходом, равным входу, путем генерации матрицы коэффициентов 3 на 5 нулей и установки значения coef(1,1) элемент в 1. Добавьте небольшие случайные комплексные нелинейные члены к матрице коэффициентов.

coef = zeros(3,5);
coef(1,1) = 1;
coef = coef + 0.01*(randn(3,5)+1j*randn(3,5));

Создайте системный объект DPD с помощью матрицы полиномиальных коэффициентов памяти. coef.

dpd = comm.DPD('PolynomialType','Memory polynomial','Coefficients',coef);

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

x = randn(20,1) + 1j*randn(20,1);
y = dpd(x);

Сравнение искаженных вручную выходных данных для входного соответствующего выходного элемента y(18) чтобы показать, как матрица коэффициентов используется для вычисления этого конкретного выходного значения.

u = x(18:-1:(18-3+1));
isequal(y(18),sum(sum(coef.*[u u.*abs(u) u.*(abs(u).^2) u.*(abs(u).^3) u.*(abs(u).^4)])))
ans = logical
   1

Эти примеры показывают формат матрицы коэффициентов для многочлена памяти DPD с использованием произвольно сформированной матрицы коэффициентов. Пример:

  • Создает цифровой системный объект предыскажателя, настроенный с использованием матрицы многомерных коэффициентов памяти с глубиной памяти, равной 3 и степень полинома, установленная как 5 состоит из случайных значений.

  • Предысторирует сигнал, используя матрицу многомерных коэффициентов памяти.

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

Создайте матрицу коэффициентов, представляющую предыскажатель с выходом, равным входу, путем генерации матрицы коэффициентов 3 на 5 нулей и установки значения coef(1,1) элемент в 1. Добавьте небольшие случайные комплексные нелинейные члены к матрице коэффициентов.

coef = zeros(3,3*(5-1)+1);
coef(1,1) = 1;
coef = coef + 0.01*(randn(3,13) + 1j*randn(3,13));

Создайте системный объект DPD с помощью матрицы многомерных коэффициентов памяти, coef.

dpd = comm.DPD('PolynomialType','Cross-term memory polynomial','Coefficients',coef);

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

x = randn(20,1) + 1j*randn(20,1);
y = dpd(x);

Сравнение искаженных вручную выходных данных для входного соответствующего выходного элемента y(18) чтобы показать, как матрица коэффициентов используется для вычисления этого конкретного выходного значения.

u = x(18:-1:(18-3+1));
isequal(y(18),sum(sum(coef.*[u u*abs(u.') u*(abs(u.').^2) u*(abs(u.').^3) u*(abs(u.').^4)])))
ans = logical
   1

Подробнее

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

Ссылки

[1] Морган, Деннис Р., Чжэнсян Ма, Джэхён Ким, Майкл Г. Зиердт и Джон Пасталан. «Обобщенная модель полинома памяти для цифровой предыскажения усилителей мощности». Транзакции IEEE ® при обработке сигналов. Том 54, номер 10, октябрь 2006, стр. 3852-3860.

[2] М. Схецен. Теории нелинейных систем Вольтерры и Винера. Нью-Йорк: Уайли, 1980.

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

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