comm.DPDCoefficientEstimator

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

Описание

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

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

  1. Создайте comm.DPDCoefficientEstimator Объекту и установите его свойства.

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

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

Создание

Описание

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

пример

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
Поддержка комплексного числа: Да

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

расширить все

Полиномиальные коэффициенты памяти, возвращенные как матрица. Для получения дополнительной информации см. Раздел «Цифровое предварительное искажение».

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

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

release(obj)

расширить все

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

Примеры

свернуть все

Примените цифровое предварительное искажение (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 System с помощью 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 при помощи случайным образом сгенерированной матрицы коэффициентов. Пример:

  • Создает цифровое предварительное искажение Системного объекта сконфигурированное с помощью матрицы коэффициентов полинома памяти с установленной глубиной памяти 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 System с помощью матрицы полиномиальных коэффициентов памяти, 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 при помощи случайным образом сгенерированной матрицы коэффициентов. Пример:

  • Создает объект digital предыскажения System, сконфигурированный с помощью межтермической памяти полинома матрицы коэффициентов с установленной глубиной памяти 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
Для просмотра документации необходимо авторизоваться на сайте