exponenta event banner

cma

(Подлежит удалению) Объект constant modulus algorithm (CMA)

cma будет удален в следующем выпуске. Использовать comm.LinearEqualizer или comm.DecisionFeedback вместо этого.

Синтаксис

alg = cma(stepsize)
alg = cma(stepsize,leakagefactor)

Описание

cma создает объект адаптивного алгоритма, который можно использовать с lineareq функции или dfe для создания объекта эквалайзера. Затем можно использовать объект эквалайзера с помощью equalize функция выравнивания сигнала. Дополнительные сведения о процессе выравнивания сигнала см. в разделе Выравнивание.

Примечание

После использования lineareq или dfe для создания объекта эквалайзера CMA необходимо инициализировать объект эквалайзера Weights свойство с ненулевым вектором. Обычно CMA используется с дифференциальной модуляцией; в противном случае начальные веса очень важны. Типичный вектор начальных весов имеет 1, соответствующий центральному отводу и 0 в другом месте.

alg = cma(stepsize) создает объект адаптивного алгоритма на основе алгоритма постоянного модуля (CMA) с размером шага stepsize.

alg = cma(stepsize,leakagefactor) устанавливает коэффициент утечки CMA. leakagefactor должно быть в диапазоне от 0 до 1. Значение 1 соответствует обычному алгоритму обновления веса, в то время как значение 0 соответствует алгоритму обновления без памяти.

Свойства

В таблице ниже описаны свойства объекта адаптивного алгоритма CMA. Сведения о просмотре или изменении значений объекта адаптивного алгоритма см. в разделе Выравнивание.

СобственностьОписание
AlgTypeФиксированное значение, 'Constant Modulus'
StepSizeПараметр размера шага CMA, неотрицательное вещественное число
LeakageFactorКоэффициент утечки CMA, действительное число от 0 до 1

Примеры

свернуть все

В этом примере настраиваются рекомендуемые comm.LinearEqualizer Системные object™ и устаревшие lineareq с сопоставимыми настройками.

Инициализация переменных и поддерживающих объектов

d = randi([0 3],1000,1);
x = pskmod(d,4,pi/4);
r = awgn(x,25);
sps = 2; %samples per symbol for oversampled cases
nTaps = 6;
txFilter = comm.RaisedCosineTransmitFilter('FilterSpanInSymbols',nTaps, ...
    'OutputSamplesPerSymbol',4);
rxFilter = comm.RaisedCosineReceiveFilter('FilterSpanInSymbols',nTaps, ...
    'InputSamplesPerSymbol',4,'DecimationFactor',2);
x2 = txFilter(x);
r2 = rxFilter(awgn(x2,25,0.5));
filterDelay = txFilter.FilterSpanInSymbols/2 + ...
    rxFilter.FilterSpanInSymbols/2; % Total filter delay in symbols

Чтобы сравнить выровненный выходной сигнал, постройте график совокупностей с использованием кода, например:

% plot(yNew,'*')
% hold on
% plot(yOld,'o')
% hold off; legend('New Eq','Old Eq'); grid on

Использование алгоритма CMA с линейным эквалайзером

Настроить lineareq и comm.LinearEqualizer объекты с сопоставимыми параметрами. LeakageFactor свойство было удалено из алгоритма CMA. comm.LinearEqualizer Система object™ предполагает, что коэффициент утечки всегда равен 1.

eqOld = lineareq(5,cma(0.05),pskmod(0:3,4,pi/4))
eqOld =
  EqType: 'Linear Equalizer'
  AlgType: 'Constant Modulus'
  nWeights: 5
  nSampPerSym: 1
  SigConst: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
  StepSize: 0.0500
  LeakageFactor: 1
  Weights: [1 0 0 0 0]
  WeightInputs: [0 0 0 0 0]
  ResetBeforeFiltering: 1
  NumSamplesProcessed: 0
eqNew = comm.LinearEqualizer('NumTaps',5,'Algorithm','CMA','StepSize',0.05, ...
    'Constellation',pskmod(0:3,4,pi/4),'ReferenceTap',1)
eqNew = comm.LinearEqualizer with properties:
  Algorithm: 'CMA'
  NumTaps: 5
  StepSize: 0.0500
  Constellation: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
  ReferenceTap: 1
  InputSamplesPerSymbol: 1
  AdaptWeightsSource: 'Property'
  AdaptWeights: true
  InitialWeightsSource: 'Auto'
  WeightUpdatePeriod: 1

Вызовите эквалайзеры.

yOld = equalize(eqOld,r);
yNew = eqNew(r);

Алгоритмы

Ссылаясь на схемы в Уравнение, определить w как вектор всех весов wi и определить u как вектор всех входов ui. На основе текущего набора весов w этот адаптивный алгоритм создает новый набор весов, заданный

(LeakageFactor) w + (StepSize) u * e

где оператор * обозначает комплексный конъюгат.

Вопросы совместимости

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

Предупреждает, начиная с R2020a

Ссылки

[1] Хайкин, Саймон, теория адаптивных фильтров, третье издание, река Верхнее Седло, Нью-Джерси, Прентис-Холл, 1996.

[2] Джонсон, Ричард К., младший, Филип Шнитер, Томас. J. Endres, et al., «Слепое выравнивание с использованием критерия постоянного модуля: обзор», Труды IEEE, том 86, октябрь 1998, стр. 1927-1950.

Представлен до R2006a