cma

(Чтобы быть удаленным) объект постоянного алгоритма модуля (CMA) Построения

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

Синтаксис

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

Описание

cma функция создает адаптивный объект алгоритма, который можно использовать с lineareq функция или dfe функция, чтобы создать объект эквалайзера. Можно затем использовать объект эквалайзера с equalize функция, чтобы компенсировать сигнал. Чтобы узнать больше о процессе для компенсации сигнала, смотрите Эквализацию.

Примечание

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

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

(LeakageFactor) w + (StepSize) u*e

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

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

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

Предупреждает запуск в R2020a

Ссылки

[1] Haykin, Саймон, адаптивная теория фильтра, треть Эд., верхний Сэддл-Ривер, NJ, Prentice Hall, 1996.

[2] Джонсон, Ричард К. младший, Филип Шнитер, Томас. Дж. Эндрес, и др., “Слепая Эквализация Используя Постоянный Критерий Модуля: Анализ”, Продолжения IEEE, Издания 86, октябрь 1998, стр 1927–1950.

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

Объекты

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