rls

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

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

Синтаксис

alg = rls(forgetfactor)
alg = rls(forgetfactor,invcorr0)

Описание

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

alg = rls(forgetfactor) создает адаптивный алгоритм, основанный на объектах на алгоритме рекурсивных наименьших квадратов (RLS). Фактором упущения является forgetfactor, вещественное число между 0 и 1. Матрица обратной корреляции инициализируется к скалярному значению.

alg = rls(forgetfactor,invcorr0) устанавливает параметр инициализации для матрицы обратной корреляции. Это скалярное значение используется, чтобы инициализировать или сбросить диагональные элементы матрицы обратной корреляции.

Свойства

Приведенная ниже таблица описывает свойства адаптивного объекта алгоритма RLS. Чтобы изучить, как просмотреть или изменить значения адаптивного объекта алгоритма, смотрите Эквализацию.

СвойствоОписание
AlgTypeФиксированное значение, 'RLS'
ForgetFactorУпущение фактора
InvCorrInitСкалярное значение раньше инициализировало или сбрасывало диагональные элементы матрицы обратной корреляции

Кроме того, когда вы используете этот адаптивный объект алгоритма создать объект эквалайзера (через lineareq функция или dfe функция), объект эквалайзера имеет InvCorrMatrix свойство, которое представляет матрицу обратной корреляции для алгоритма RLS. Начальное значение InvCorrMatrix InvCorrInit*eye(N), где N общее количество весов эквалайзера.

Примеры

свернуть все

Этот пример конфигурирует рекомендуемый 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

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

Сконфигурируйте lineareq и comm.LinearEqualizer объекты с сопоставимыми настройками.

eqOld = lineareq(5,rls(0.95),pskmod(0:3,4,pi/4))
eqOld =
  EqType: 'Linear Equalizer'
  AlgType: 'RLS'
  nWeights: 5
  nSampPerSym: 1
  RefTap: 1
  SigConst: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
  InvCorrInit: 0.1000
  InvCorrMatrix: [5×5 double]
  Weights: [0 0 0 0 0]
  WeightInputs: [0 0 0 0 0]
  ResetBeforeFiltering: 1
  NumSamplesProcessed: 0
eqNew = comm.LinearEqualizer('NumTaps',5,'Algorithm','RLS', ...
    'ForgettingFactor',0.95,'Constellation',pskmod(0:3,4,pi/4),'ReferenceTap',1)
eqNew = comm.LinearEqualizer with properties:
  Algorithm: 'RLS'
  NumTaps: 5
  ForgettingFactor: 0.9500
  InitialInverseCorrelationMatrix: 0.1000
  Constellation: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
  ReferenceTap: 1
  InputDelay: 0
  InputSamplesPerSymbol: 1
  TrainingFlagInputPort: false
  AdaptAfterTraining: true
  InitialWeightsSource: 'Auto'
  WeightUpdatePeriod: 1

Вызовите эквалайзеры. Когда ResetBeforeFiltering установлен в true, каждый вызов equalize возразите сбрасывает эквалайзер. Чтобы получить эквивалентное поведение вызывают reset после каждого вызова comm.LinearEqualizer объект.

yOld1 = equalize(eqOld,r,x(1:100));
yOld2 = equalize(eqOld,r,x(1:100));

yNew1 = eqNew(r,x(1:100));
reset(eqNew)
yNew2 = eqNew(r,x(1:100));

Сконфигурируйте lineareq и comm.LinearEqualizer объекты с сопоставимыми настройками. Для comm.LinearEqualizer объект, набор начальная матрица обратной корреляции к eye(5)*0.2.

eqOld = lineareq(5,rls(0.95),pskmod(0:3,4,pi/4))
eqOld =
  EqType: 'Linear Equalizer'
  AlgType: 'RLS'
  nWeights: 5
  nSampPerSym: 1
  RefTap: 1
  SigConst: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
  ForgetFactor: 0.9500
  InvCorrInit: 0.1000
  InvCorrMatrix: [5×5 double]
  Weights: [0 0 0 0 0]
  WeightInputs: [0 0 0 0 0]
  ResetBeforeFiltering: 1
  NumSamplesProcessed: 0
eqNew = comm.LinearEqualizer('NumTaps',5,'Algorithm','RLS', ...
    'ForgettingFactor',0.95,'Constellation',pskmod(0:3,4,pi/4),'ReferenceTap',1, ...
    'InitialInverseCorrelationMatrix',eye(5)*0.2)
eqNew = comm.LinearEqualizer with properties:
  Algorithm: 'RLS'
  NumTaps: 5
  ForgettingFactor: 0.9500
  InitialInverseCorrelationMatrix: [5×5 double]
  Constellation: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
  ReferenceTap: 1
  InputDelay: 0
  InputSamplesPerSymbol: 1
  TrainingFlagInputPort: false
  AdaptAfterTraining: true
  InitialWeightsSource: 'Auto'
  WeightUpdatePeriod: 1

Вызовите эквалайзеры. Когда ResetBeforeFiltering установлен в true, каждый вызов equalize возразите сбрасывает эквалайзер. Чтобы получить эквивалентное поведение вызывают reset после каждого вызова comm.LinearEqualizer объект.

yOld1 = equalize(eqOld,r,x(1:100));
yOld2 = equalize(eqOld,r,x(1:100));

yNew1 = eqNew(r,x(1:100));
reset(eqNew)
yNew2 = eqNew(r,x(1:100));

Алгоритмы

Что касается схематики, представленной в Эквализации, задайте w как вектор всех весов w i и задайте u как вектор всех входных параметров u i. На основе текущего набора входных параметров, u, и текущей матрицы обратной корреляции, P, этот адаптивный алгоритм сначала вычисляет вектор усиления Кальмана, K

K=Pu(ForgettingFactor)+uHPu.

где H обозначает, что Эрмитовы транспонируют.

Затем новой матрицей обратной корреляции дают

(ForgetFactor)-1 (P – KuHP)

и новым набором весов дают

w + K *e

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

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

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

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

Ссылки

[1] Farhang-Boroujeny, B., адаптивные фильтры: теория и Applications, Chichester, England, John Wiley & Sons, 1998.

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

[3] Kurzweil, J., введение в цифровую связь, Нью-Йорк, John Wiley & Sons, 2000.

[4] Proakis, Джон Г., цифровая связь, четвертый Эд., Нью-Йорк, McGraw-Hill, 2001.

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

Объекты

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