comm.MemorylessNonlinearity

Примените нелинейность без памяти к входному сигналу

Описание

MemorylessNonlinearity объект применяет нелинейность без памяти к комплексу, сгенерированному модулированному сигналу. Можно использовать объект смоделировать нарушения радиочастоты (RF) к сигналу в получателе.

Применять нелинейность без памяти к входному сигналу:

  1. Задайте и настройте свой объект нелинейности без памяти. Смотрите Конструкцию.

  2. Вызовите step применять нелинейность без памяти согласно свойствам comm.MemorylessNonlinearity. Поведение step характерно для каждого объекта в тулбоксе.

Примечание

Запуск в R2016b, вместо того, чтобы использовать step метод, чтобы выполнить операцию, заданную Системой object™, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполните эквивалентные операции.

Конструкция

H = comm.MemorylessNonlinearity создает Системный объект нелинейности без памяти, H. Эта радиочастота (RF) получателя объектных моделей нарушения.

H = comm.MemorylessNonlinearity(Name,Value) создает объект нелинейности без памяти, H, с каждым заданным набором свойств к заданному значению. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).

Свойства

Method

Метод раньше моделировал нелинейность

Задайте метод нелинейности как один из Cubic polynomial | Hyperbolic tangent | Saleh model | Ghorbani model | Rapp model|'Lookup table'. Значением по умолчанию является Cubic polynomial. Это свойство является ненастраиваемым.

InputScaling

Масштабный коэффициент применился к входному сигналу

Задайте масштабный коэффициент в децибелах. Объект применяет этот фактор к входному сигналу как действительное скалярное значение двойных - или тип данных с одинарной точностью. Значением по умолчанию является 0. Это свойство применяется, когда вы устанавливаете Method свойство к Saleh model или Ghorbani model. Это свойство является настраиваемым.

LinearGain

Линейное усиление применилось к выходному сигналу

Задайте линейное усиление (в децибелах), что объект применяется к выходному сигналу как к действительному скалярному значению двойных - или тип данных с одинарной точностью. Значением по умолчанию является 0. Это свойство применяется, когда вы устанавливаете Method свойство к Cubic polynomialГиперболическая касательная, или Rapp model. Это свойство является настраиваемым.

IIP3

Третий порядок ввел точку пересечения

Задайте входную точку пересечения третьего порядка (в децибелах относительно милливатта) как действительное скалярное значение двойных - или тип данных с одинарной точностью. Значением по умолчанию является 30. Это свойство применяется, когда вы устанавливаете Method свойство к Cubic polynomial или Hyperbolic tangent. Это свойство является настраиваемым.

AMPMConversion

Коэффициент преобразования AM/PM

Задайте коэффициент преобразования AM/PM (в градусах на децибел) как действительное скалярное значение двойных - или тип данных с одинарной точностью. Значением по умолчанию является 10. Это свойство применяется, когда вы устанавливаете Method свойство к Cubic polynomial или Hyperbolic tangent. Это свойство является настраиваемым.

AMAMParameters

Параметры преобразования AM

Задайте параметры преобразования AM, что объект используется для расчета амплитудного усиления во входном сигнале как вектор действительных чисел двойных - или тип данных с одинарной точностью. Значением по умолчанию является [2.1587 1.1517] для модели Салеха и [8.1081 1.5413 6.5202 -0.0718] для модели Ghorbani.

Это свойство применяется, когда вы устанавливаете Method свойство к Saleh model или Ghorbani model.

Когда вы устанавливаете Method свойство к Saleh model, это свойство является двухэлементным вектором, который задает альфу и коэффициенты бета. В противном случае это свойство является четырехэлементным вектором, который задает x1, x2, x3, и x4 значения. Это свойство является настраиваемым.

AMPMParameters

Параметры преобразования AM/PM

Укажите, что параметры преобразования AM/PM использовались для расчета фазового перехода во входном сигнале как вектор действительных чисел двойных - или тип данных с одинарной точностью. Значением по умолчанию является [4.0033 9.1040] для модели Салеха и [4.6645 2.0965 10.88 -0.003] для модели Ghorbani.

Это свойство применяется, когда вы устанавливаете Method свойство к Saleh model или Ghorbani model.

Когда вы устанавливаете Method свойство к Saleh model, это свойство является двухэлементным вектором, который задает альфу и коэффициенты бета. В противном случае это свойство является четырехэлементным вектором, который задает y1, y2, y3, и y4 значения. Это свойство является настраиваемым.

PowerLowerLimit

Более низкий предел входной мощности

Минимальная входная мощность в децибелах относительно милливатта, заданного как скаляр, для который шкалы перевода AM/PM линейно со значением входной мощности. Значением по умолчанию является 10. Ниже этого значения сдвиг фазы, следующий из преобразования AM/PM, является нулем. Это свойство применяется, когда вы устанавливаете Method свойство к Cubic polynomial или Hyperbolic tangent. Это свойство является настраиваемым.

PowerUpperLimit

Верхний предел входной мощности

Задайте максимальную входную мощность (в децибелах относительно милливатта) для который шкалы перевода AM/PM линейно со значением входной мощности. Значением по умолчанию является inf. Выше этого значения сдвиг фазы, следующий из преобразования AM/PM, является постоянным. Необходимо установить PowerUpperLimit свойство к действительному скалярному значению, которое больше PowerLowerLimit свойство и двойных - или тип данных с одинарной точностью. Это свойство применяется, когда вы устанавливаете Method свойство к Cubic polynomial или Hyperbolic tangentСвойство.This является настраиваемым.

OutputScaling

Масштабный коэффициент применился к выходному сигналу

Задайте масштабный коэффициент (в децибелах), что объект применяется к выходному сигналу как к действительному скалярному значению двойных - или тип данных с одинарной точностью. Значением по умолчанию является 0. Это свойство применяется, когда вы устанавливаете Method свойство к Saleh model или Ghorbani model. Это свойство является настраиваемым.

Smoothness

Фактор гладкости

Задайте фактор гладкости как действительное скалярное значение двойных - или тип данных с одинарной точностью. Значением по умолчанию является 0.5. Это свойство применяется, когда вы устанавливаете Method свойство к Rapp model. Это свойство является настраиваемым.

OutputSaturationLevel

Выведите уровень насыщенности

Задайте выходной уровень насыщенности как действительное скалярное значение двойных - или тип данных с одинарной точностью. Это свойство применяется, когда вы устанавливаете Method свойство к Rapp model. Значением по умолчанию является 1. Это свойство является настраиваемым.

Table

Интерполяционная таблица характеристик усилителя

Интерполяционная таблица характеристик усилителя, заданная как [P в, P, Φ]-by-N матрица измеренных характеристик усилителя мощности (PA). Строки N матрицы содержат измеренные значения входного сигнала PA, P в, выходной сигнал PA, P и выходной сдвиг фазы, Φ. Уровни сигнала (P в и P) должны быть в dBm, и сдвиг фазы (Φ) должен быть в градусах. Этот Системный объект использует измеренные характеристики PA, заданные этим свойством вычислить AM (в dBm/dBm) и AM/PM (в deg/dBm) нелинейные характеристики нарушения. Системный объект искажает входной сигнал вычисленным AM (в dBm/dBm) и AM/PM (в deg/dBm). Матрица характеристик PA по умолчанию [-25, 5.16,-0.25;-20, 10.11,-0.47;-15, 15.11,-0.68;-10, 20.05,-0.89;-5, 24.79,-1.22; 0, 27.64, 5.59; 5, 28.49, 12.03]. Это свойство применяется, когда вы устанавливаете свойство Method на 'Lookup table'. Это свойство является настраиваемым.

Методы

шагПримените нелинейность без памяти к входному сигналу
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

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

Сгенерируйте 16-QAM модулируемые данные со средней степенью 10 мВт и передайте данные через нелинейный усилитель мощности.

M = 16;
data = randi([0 M-1]',1000,1);
avgPow = 1e-2;
minD = avgPow2MinD(avgPow, M);

Создайте Системный объект Нелинейности Без памяти с помощью модели Салеха.

saleh = comm.MemorylessNonlinearity('Method','Saleh model');

Сгенерируйте модулируемые символы и передайте их через модель нелинейности.

modData = (minD/2).*qammod(data,M);
y = saleh(modData);

Постройте результирующий график рассеивания.

scatterplot(y)

function minD = avgPow2MinD(avgPow, M)
    % Average power to minimum distance    
    nBits = log2(M);
    if (mod(nBits,2)==0)
        % Square QAM
        sf = (M - 1)/6;
    else
        % Cross QAM
        if (nBits > 4)
            sf = ((31 * M / 32) - 1) / 6;
        else
            sf = ((5 * M / 4) - 1) / 6;
        end
    end
    minD = sqrt(avgPow/sf);
end

Постройте сжатие усиления нелинейного усилителя для 16-QAM сигнала.

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

M = 16;
sps = 4;

Чтобы смоделировать нелинейный усилитель, создайте объект нелинейности без памяти, имеющий точку пересечения третьего порядка на 30 дБ. Создайте повышенный фильтр передачи косинуса.

amplifier = comm.MemorylessNonlinearity('IIP3',30);

txfilter = comm.RaisedCosineTransmitFilter('RolloffFactor',0.3, ...
    'FilterSpanInSymbols',6, ...
    'OutputSamplesPerSymbol',sps, ...
    'Gain',sqrt(sps));

Задайте входную мощность в dBm. Преобразуйте входную мощность в W и инициализируйте вектор усиления.

pindBm = -5:25;
pin = 10.^((pindBm-30)/10);
gain = zeros(length(pindBm),1);

Выполните основной цикл обработки, который включает эти шаги:

  • Генерация случайных символов данных

  • Модуляция данных и корректировка средней степени

  • Фильтрация модулируемого сигнала

  • Усиление сигнала

  • Измерение усиления

for k = 1:length(pin)
    data = randi([0 M-1],1000,1);
    modSig = qammod(data,M,'UnitAveragePower',true)*sqrt(pin(k));
    filtSig = txfilter(modSig);
    ampSig = amplifier(filtSig);
    gain(k) = 10*log10(var(ampSig)/var(filtSig));
end

Постройте усиление усилителя как функцию степени входного сигнала.

arrayplot = dsp.ArrayPlot('PlotType','Line','XLabel','Power In (dBm)', ...
'XOffset',-5,'YLimits',[-5 5]);

arrayplot(gain)

1 точка сжатия усиления дБ происходит для входной мощности 18.5 dBm. Чтобы увеличить точку, в которой наблюдается сжатие на 1 дБ, увеличьте точку пересечения третьего порядка, amplifier.IIP3.

Примените нелинейные характеристики усилителя мощности (PA) к 16-QAM сигналу путем установки Method свойство к Lookup table.

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

M = 16; % Modulation order
sps = 4; % Samples per symbol
pindBm = -2; % Input power
pin = 10.^((pindBm-30)/10); % power in Watts
data = randi([0 M-1],1000,1);
refdata = 0:M-1;
refconst = qammod(refdata,M,'UnitAveragePower',true);

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

amplifier = comm.MemorylessNonlinearity('Method','Lookup table');
txfilter = comm.RaisedCosineTransmitFilter('RolloffFactor',0.3, ...
    'FilterSpanInSymbols',6,'OutputSamplesPerSymbol',sps,'Gain',sqrt(sps));
constellation = comm.ConstellationDiagram('SamplesPerSymbol',4,'ReferenceConstellation',refconst, ...
    'Title','Amplified/Distorted Signal');

Модулируйте случайные данные. Отфильтруйте и примените нелинейные характеристики усилителя к символам модуляции.

modSig = qammod(data,M,'UnitAveragePower',true)*sqrt(pin);
filtSig = txfilter(modSig);
ampSig = amplifier(filtSig);

Вычислите уровни сигнала ввода и вывода и сдвиг фазы.

poutdBm = (20*log10(abs(ampSig)))+30;
simulated_pindBm = (20*log10(abs(filtSig)))+30;
phase = angle(ampSig.*conj(filtSig))*180/pi;

Постройте характеристики AM, характеристики AM/PM и результаты созвездия.

figure
set(gcf,'units','normalized','position',[.25 1/3 .5 1/3])
subplot(1,2,1)
plot(simulated_pindBm,poutdBm,'.'); 
hold on
plot(amplifier.Table(:,1),amplifier.Table(:,2),'.','Markersize',15);
xlabel('Input Power (dBm)')
ylabel('Output Power (dBm)');
grid on; 
title('AM/AM Characteristic');
Legend={'Simulated Results','Measurement'};
legend (Legend,'Location','north');

subplot(1,2,2)
plot(simulated_pindBm,phase,'.');
hold on
plot(amplifier.Table(:,1),amplifier.Table(:,3),'.','Markersize',15);
legend (Legend,'Location','north');
xlabel('Input Power (dBm)'); 
ylabel('Output Phase Shift (deg.)');
grid on; title('AM/PM Characteristic');

Сжатие созвездия, из-за нелинейных характеристик усилителя, очевидно по сравнению со ссылочным созвездием.

constellation(ampSig)

Примените нелинейные характеристики усилителя мощности (PA) к 16-QAM сигналу путем установки Method свойство к Lookup table.

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

M = 16; % Modulation order
sps = 4; % Samples per symbol
pindBm = -8; % Input power
pin = 10.^((pindBm-30)/10); % power in Watts
data = randi([0 M-1],1000,1);
refdata = 0:M-1;
refconst = qammod(refdata,M,'UnitAveragePower',true);
paChar = pa_performance_characteristics();

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

amplifier = comm.MemorylessNonlinearity('Method','Lookup table','Table',paChar);
txfilter = comm.RaisedCosineTransmitFilter('RolloffFactor',0.3, ...
    'FilterSpanInSymbols',6,'OutputSamplesPerSymbol',sps,'Gain',sqrt(sps));
constellation = comm.ConstellationDiagram('SamplesPerSymbol',4, ...
    'Title','Amplified/Distorted Signal','NumInputPorts',2, ...
    'ReferenceConstellation', refconst,'ShowLegend',true, ...
    'ChannelNames',{'Amplified signal','Filtered signal'});

Модулируйте случайные данные. Отфильтруйте и примените нелинейные характеристики усилителя к символам модуляции.

modSig = qammod(data,M,'UnitAveragePower',true)*sqrt(pin);
filtSig = txfilter(modSig);
ampSig = amplifier(filtSig);

Вычислите уровни сигнала ввода и вывода и сдвиг фазы.

poutdBm = (20*log10(abs(ampSig)))+30;
simulated_pindBm = (20*log10(abs(filtSig)))+30;
phase = angle(ampSig.*conj(filtSig))*180/pi;

Постройте характеристики AM, характеристики AM/PM и результаты созвездия.

figure
set(gcf,'units','normalized','position',[.25 1/3 .5 1/3])
subplot(1,2,1)
plot(simulated_pindBm,poutdBm,'.');
hold on
plot(amplifier.Table(:,1),amplifier.Table(:,2),'.','Markersize',15);
xlabel('Input Power (dBm)')
ylabel('Output Power (dBm)');
grid on;
title('AM/AM Characteristic');
Legend={'Simulated Results','Measurement'};
legend (Legend,'Location','south');

subplot(1,2,2)
plot(simulated_pindBm,phase,'.');
hold on
plot(amplifier.Table(:,1),amplifier.Table(:,3),'.','Markersize',15);
legend (Legend,'Location','south');
xlabel('Input Power (dBm)');
ylabel('Output Phase Shift (deg.)');
grid on; title('AM/PM Characteristic');

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

filtSig = filtSig/mean(abs(filtSig)); % Normalized filtered signal
ampSig = ampSig/mean(abs(ampSig)); % Normalized amplified signal
constellation(filtSig,ampSig)

function paChar = pa_performance_characteristics()

pa_performance_characteristics функция помощника обеспечивает показатели производительности усилителя. Данные извлечены от фигуры 4 Hammi, Oualid, и др. "Оценка усилителей мощности модели и квантификация интенсивности эффектов памяти с помощью метода посткомпенсации без памяти". Транзакции IEEE на Микроволновой Теории и Методах 56.12 (2008): 3170-3179.

Операционная спецификация для основанного на LDMOS Усилителя Доэрти:

  • Частота: 2110 МГц

  • Пиковая мощность: 300w

  • Маленькое усиление сигнала: 61 дБ

Каждая строка в HAV08_Table задает Контакт (dBm), Усиление (дБ), сдвиг Фазы (Степень).

HAV08_Table =...
    [-35,60.53,0.01;
    -34,60.53,0.01;
    -33,60.53,0.08;
    -32,60.54,0.08;
    -31,60.55,0.1;
    -30,60.56,0.08;
    -29,60.57,0.14;
    -28,60.59,0.19;
    -27,60.6,0.23;
    -26,60.64,0.21;
    -25,60.69,0.28;
    -24,60.76,0.21;
    -23,60.85,0.12;
    -22,60.97,0.08;
    -21,61.12,-0.13;
    -20,61.31,-0.44;
    -19,61.52,-0.94;
    -18,61.76,-1.59;
    -17,62.01,-2.73;
    -16,62.25,-4.31;
    -15,62.47,-6.85;
    -14,62.56,-9.82;
    -13,62.47,-12.29;
    -12,62.31,-13.82;
    -11,62.2,-15.03;
    -10,62.15,-16.27;
    -9,62,-18.05;
    -8,61.53,-20.21;
    -7,60.93,-23.38;
    -6,60.2,-26.64;
    -5,59.38,-28.75];

Преобразуйте второй столбец от Усиления, чтобы Дуться для использования Системным объектом нелинейности без памяти.

paChar = HAV08_Table;
paChar(:,2) = paChar(:,1)+paChar(:,2);
end

Алгоритмы

Этот объект реализует алгоритм, входные параметры и выходные параметры, описанные на странице с описанием блока Memoryless Nonlinearity. Свойства объектов соответствуют параметрам блоков.

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

Смотрите также

Представленный в R2012a