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

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

Описание

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

Вычислить коэффициенты перед искажением:

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

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

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

Создание

Синтаксис

estimator = comm.DPDCoefficientEstimator
estimator = comm.DPDCoefficientEstimator(Name,Value)

Описание

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

пример

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Желаемое амплитудное усиление в дБ, заданном как скаляр. Это значение свойства выражает желаемое усиление сигнала по поводу компенсированного усилителя вывод.

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

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

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

  • 'Memory polynomial' — Вычисляет коэффициенты перед искажением при помощи полинома памяти без перекрестных условий

  • 'Cross-term memory polynomial' — Вычисляет коэффициенты перед искажением при помощи полинома памяти с перекрестными условиями

Для получения дополнительной информации смотрите Цифровое Предварительное искажение.

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

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

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

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

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

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

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

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

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

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

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

Зависимости

Чтобы включить это свойство, установите Алгоритм на 'Recursive least squares'.

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

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

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

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

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

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

Для получения дополнительной информации смотрите Цифровое Предварительное искажение.

Зависимости

Чтобы включить это свойство, установите Алгоритм на 'Recursive least squares'.

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

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

Синтаксис

coef = estimator(paIn,paOut)

Описание

пример

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 с помощью coef, предполагаемых коэффициентов вывод от содействующего средства оценки DPD, что касается матрицы коэффициентов.

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

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

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

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

y = dpd(x);

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

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

  • Предварительно искажает сигнал с помощью полиномиальной памятью матрицы коэффициентов.

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

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

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

  • Предварительно искажает сигнал с помощью матрицы коэффициентов полинома памяти перекрестного термина.

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

Создайте матрицу коэффициентов, представляющую predistorter с выводом, равным входу путем генерации матрицы коэффициентов 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® Transactions на Обработке сигналов. Издание 54, Номер 10, октябрь 2006, стр 3852–3860.

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

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

Введенный в R2019a