cma

(Будет удален) Создайте объект алгоритма постоянного модуля (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 объекты с сопоставимыми настройками. The LeakageFactor свойство удалено из алгоритма CMA. The 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 как вектор всех весов w i и задайте u как вектор всех входов u i. На основе текущего набора весов, w, этот адаптивный алгоритм создает новый набор весов, заданных как

(LeakageFactor) w + (StepSize) u*e

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

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

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

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

Ссылки

[1] Haykin, Simon, Adaptive Filter Theory, Third Ed., Upper Saddle River, NJ, Prentice Hall, 1996.

[2] Джонсон, Ричард К., младший, Филипп Шнитер, Томас. J. Endres, et al., «Blind Equalization Using the Constant Modulus Criterion: A Review», Proceedings of the IEEE, Vol. 86, October 1998, pp. 1927-1950.

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