exponenta event banner

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

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

Описание

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

Для вычисления коэффициентов предыскажения:

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

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

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

Создание

Описание

estimator = comm.DPDCoefficientEstimator создает цифровой блок оценки коэффициента предыскажений Системный объект для оценки коэффициентов многочлена памяти для цифрового предыскажения (ДПД) нелинейного усилителя мощности.

пример

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

Свойства

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

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

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

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

Требуемый коэффициент усиления амплитуды в дБ, заданный как скаляр. Это значение свойства выражает желаемый коэффициент усиления сигнала на выходе компенсированного усилителя.

Настраиваемый: Да

Типы данных: double

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

  • 'Memory polynomial' - вычисляет коэффициенты предыскажений с помощью многочлена памяти без перекрестных терминов;

  • 'Cross-term memory polynomial' - вычисляет коэффициенты предыскажений с помощью многочлена памяти с перекрестными членами;

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

Память - полиномиальная степень, заданная как положительное целое число.

Типы данных: double

Глубина памяти-полинома в выборках, заданная как положительное целое число.

Типы данных: double

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

  • 'Least squares' - Оценка полиномиальных коэффициентов памяти с помощью алгоритма наименьших квадратов

  • 'Recursive least squares' - Оценка полиномиальных коэффициентов памяти с помощью рекурсивного алгоритма наименьших квадратов

Для получения справочной информации по алгоритму см. работы, перечисленные в [1] и [2].

Типы данных: char | string

Коэффициент забывания, используемый алгоритмом рекурсивных наименьших квадратов, заданный как скаляр в диапазоне (0, 1]. Уменьшение коэффициента забывания уменьшает время сходимости, но приводит к снижению стабильности выходных оценок.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, установите для параметра Algorithm значение 'Recursive least squares'.

Типы данных: double

Начальная оценка коэффициента для рекурсивного алгоритма наименьших квадратов, заданного как матрица.

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

  • Если InitialCoefficientEstimate является непустой матрицей, число строк должно быть равно MemoryDepth.

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

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

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

Зависимости

Чтобы включить это свойство, установите для параметра Algorithm значение 'Recursive least squares'.

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

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

Описание

пример

coef = estimator(paIn,paOut) оценивает коэффициенты многочлена памяти для использования comm.DPD Задача системы состоит в том, чтобы предустанавливать комплексный сигнал основной полосы частот с использованием многочлена памяти для компенсации нелинейности в усилителе мощности.

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

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

Эквивалентный вход усилителя мощности, определяемый как вектор столбца.

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

Эквивалентный выход усилителя мощности в основной полосе, определяемый как вектор столбца той же длины, что и paIn.

Типы данных: 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