normlms

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

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

Синтаксис

alg = normlms(stepsize)
alg = normlms(stepsize,bias)

Описание

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

alg = normlms(stepsize) создает адаптивный алгоритм, основанный на объектах на нормированном алгоритме наименьшее количество среднего квадратичного (LMS) с размером шага stepsize и параметр смещения нуля.

alg = normlms(stepsize,bias) устанавливает параметр смещения нормированного LMS-алгоритма. bias должен быть между 0 и 1. Алгоритм использует параметр смещения, чтобы преодолеть трудности, когда входной сигнал алгоритма мал.

Свойства

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

СвойствоОписание
AlgTypeФиксированное значение, 'Normalized LMS'
StepSizeПараметр размера шага LMS, неотрицательное вещественное число
LeakageFactorФактор утечки LMS, вещественное число между 0 и 1. Значение 1 соответствует обычному алгоритму обновления веса, в то время как значение 0 соответствует алгоритму обновления без памяти.
BiasНормированные LMS смещают параметр, неотрицательное вещественное число

Примеры

свернуть все

Для соответствующей эквализации с помощью адаптивных алгоритмов кроме CMA необходимо установить ссылочное касание так, чтобы это превысило задержку, в символах, между модулятором передатчика выход и входом эквалайзера. Когда этому условию удовлетворяют, общая задержка между модулятором выход и эквалайзером, выход равен (RefTap-1)/nSampPerSym символы. Поскольку задержка канала обычно неизвестна, установившаяся практика должна установить ссылочное касание на центральное касание в линейном эквалайзере, или центральное касание форварда просачивается эквалайзер обратной связи решения.

Для эквалайзеров CMA выше не применяется выражение, потому что эквалайзер CMA не имеет никакого ссылочного касания. Если необходимо знать задержку, можно найти его опытным путем после того, как веса эквалайзера сходились. Используйте xcorr функция, чтобы исследовать взаимные корреляции модулятора выход и эквалайзер выход.

Методы для Работы с задержками

Вот некоторые типичные способы принять задержку во внимание D путем дополнения или усечения данных:

  • Заполните свои исходные данные дополнительными символами D в конце. Прежде, чем сравнить исходные данные с полученными данными, не используйте первые символы D полученных данных. В этом подходе все исходные данные (не включая дополнение) составляются в полученных данных.

  • Прежде, чем сравнить исходные данные с полученными данными, не используйте последние символы D исходных данных и первые символы D полученных данных. В этом подходе некоторые исходные символы не составляются в полученных данных.

Этот пример иллюстрирует второй подход путем исключения последних символов D, чтобы составлять задержку. Для примера, который иллюстрирует оба подхода в контексте interleavers, смотрите Задержки Сверточного Interleavers.

Создайте случайный сигнал, и BPSK модулируют его. Присвойте фрагмент сигнала как учебный сигнал.

M = 2; % Use BPSK modulation
msg = randi([0 M-1],1000,1); % Random data
bpskMod = comm.BPSKModulator('PhaseOffset',0);
modmsg = bpskMod(msg); % Modulate
trainlen = 100; % Length of training sequence
trainsig = modmsg(1:trainlen); % Training sequence

Задайте эквалайзер и компенсируйте полученный сигнал.

eqlin = lineareq(3,normlms(.0005,.0001),pskmod(0:M-1,M));
eqlin.RefTap = 2; % Set reference tap of equalizer.
[eqsig,detsym] = equalize(eqlin,modmsg,trainsig); % Equalize.

Демодулируйте обнаруженный сигнал.

bpskDemod = comm.BPSKDemodulator('PhaseOffset',0);
detmsg = bpskDemod(detsym);

Вычислите частоту ошибок по битам при компенсации задержки, введенной RefTap и игнорирование обучающей последовательности.

D = (eqlin.RefTap-1)/eqlin.nSampPerSym;
hErrorCalc = comm.ErrorRate('ReceiveDelay',D);
berVec = step(hErrorCalc, msg(trainlen+1:end), detmsg(trainlen+1:end));
ber = berVec(1)
ber = 0
numerrs = berVec(2)
numerrs = 0

Алгоритмы

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

(LeakageFactor)w+(Неродной размер)u*euHu+Смещение

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

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

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

Не рекомендуемый запуск в R2019a

Ссылки

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

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

Объекты

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

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