comm.DPDCoefficientEstimator

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

Описание

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]. Уменьшение фактора упущения уменьшает время сходимости, но заставляет выходные оценки быть менее устойчивыми.

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

Зависимости

Чтобы включить это свойство, установите Алгоритм на '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) оценивает коэффициенты полинома памяти для использования 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 при помощи случайным образом сгенерированной матрицы коэффициентов. Шаги в примере включают:

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