Эквалайзеры оценки последовательности максимального правдоподобия (MLSE) обеспечивают оптимальное выравнивание временных вариаций характеристик канала распространения. Однако корректоры MLSE иногда менее привлекательны, поскольку их вычислительная сложность выше, чем адаптивные корректоры.
В Toolbox™ связи, mlseeq функция, comm.MLSEEqualizer Системный object™ и блок уравнивателя MLSE используют алгоритм Витерби для выравнивания линейно модулированного сигнала через дисперсный канал. Эти признаки выводят оценку последовательности максимального правдоподобия сигнала, используя оценку канала, смоделированного как фильтр с конечным входным откликом (КИХ).
Для декодирования принятого сигнала эквалайзер MLSE:
Применяет фильтр FIR к символам во входном сигнале. Веса отводов КИХ-фильтра соответствуют оценке канала.
Использует алгоритм Витерби для вычисления путей отслеживания и метрики состояния. Эти значения присваиваются символам на каждом шаге алгоритма Витерби. Метрики основаны на евклидовом расстоянии.
Выводит оценку последовательности максимального правдоподобия сигнала в виде последовательности комплексных чисел, соответствующих точкам созвездия модулированного сигнала.
Эквалайзер MLSE дает наилучшую теоретически возможную производительность, но является вычислительно интенсивным.
Материал фона на уравнителях MLSE см. в разделе Выбранные привязки для уравнителей.
Вы можете использовать mlseeq функции или comm.MLSEEqualizer Системный объект для выравнивания MLSE в MATLAB ®. Примеры в этом разделе называют mlseeq функция. Аналогичный рабочий процесс применяется при использовании comm.MLSEEqualizer Системный объект. Примеры использования объекта System см. в разделе comm.MLSEEqualizer Страница ссылки на системный объект.
mlseeq функция имеет два режима работы:
Режим непрерывной работы позволяет обрабатывать последовательность векторов с помощью повторных вызовов mlseeq. Функция сохраняет информацию о своем внутреннем состоянии от одного вызова к другому. Дополнительные сведения см. в разделе Выравнивание в режиме непрерывной работы.
Режим операции сброса позволяет указать преамбулу и почтовую амбу, которые сопровождают данные. Дополнительные сведения см. в разделе Использование преамбулы или Postamble.
Если вы не обрабатываете ряд векторов и не хотите указывать преамбулу или постамблю, рабочие режимы почти идентичны. Они отличаются тем, что режим непрерывной работы имеет задержку, в то время как режим перезагрузки не действует. В следующем примере используется режим перезагрузки. При изменении примера для выполнения в режиме непрерывной работы будет наблюдаться задержка в выравниваемом выводе. Дополнительные сведения об этой задержке см. в разделе Задержки в режиме непрерывной работы.
В самом простом виде, mlseeq функция выравнивает вектор модулированных данных при указании:
Оцененные коэффициенты канала (смоделированные как КИХ-фильтр).
Совокупность сигналов для типа модуляции.
Глубина отслеживания алгоритма Витерби. Большие значения глубины отслеживания могут улучшить результаты работы эквалайзера, но увеличить время вычисления.
Генерируют PSK-модулированный сигнал с порядком модуляции, равным четырем.
M = 4; msg = pskmod([1 2 2 0 3 1 3 3 2 1 0 2 3 0 1]',M);
Фильтрация модулированного сигнала по каналу искажения.
chcoeffs = [.986; .845; .237; .12345+.31i]; filtmsg = filter(chcoeffs,1,msg);
Определите опорную совокупность, длину отслеживания и оценку канала для эквалайзера MLSE. В этом примере точный канал предоставляется в качестве оценки канала.
const = pskmod([0:M-1],M); tblen = 10; chanest = chcoeffs;
Выровнять принятый сигнал.
msgEq = mlseeq(filtmsg,chanest,const,tblen,'rst');
isequal(msg,msgEq)ans = logical
1
Если данные разбиты на последовательность векторов (например, обрабатываемых в цикле), режим непрерывной работы является подходящим способом использования mlseeq функция. В режиме непрерывной работы, mlseeq может сохранять информацию о своем внутреннем состоянии для использования в последующем вызове и может инициализироваться с использованием ранее сохраненной информации о состоянии. Выбор режима непрерывной работы при вызове mlseeq, указать 'cont' в качестве входного аргумента.
Примечание
Режим непрерывной работы имеет задержку, как описано в разделе Задержки в режиме непрерывной работы. Этот режим не может соответствовать преамбуле или постамбле.
При использовании режима непрерывной работы в цикле предварительно распределите три пустые матричные переменные, чтобы сохранить метрики состояния, состояния отслеживания и входные данные отслеживания для эквалайзера до запуска цикла выравнивания. Внутри цикла вызовите mlseeq с использованием синтаксиса, например:
sm = []; ts = []; ti = []; for ... [y,sm,ts,ti] = mlseeq(x,chcoeffs,const,tblen,'cont',nsamp,sm,ts,ti); ... end
Используя sm, ts, и ti в качестве входных аргументов вызывает mlseeq для продолжения работы с того места, где она была завершена в предыдущей итерации. Используя sm, ts, и ti как выходные аргументы вызывает mlseeq для обновления информации о состоянии в конце текущей итерации. В первой итерации sm, ts, и ti начинаются как пустые матрицы, поэтому первый вызов mlseeq функция инициализирует метрики всех состояний на 0.
Режим непрерывной работы с глубиной следа tblen несет задержку на выходе в размере tblen символы. Первое tblen выходные символы не связаны с входным сигналом и последним tblen входные символы не связаны с выходным сигналом. Например, эта команда использует глубину отслеживания, равную 3. Первые три выходных символа не связаны с входным сигналом ones(1,10).
y = mlseeq(ones(1,10),1,[-7:2:7],3,'cont')y =
-7 -7 -7 1 1 1 1 1 1 1
Важно отслеживать задержки, вносимые различными частями системы связи. Пример использования mlseeq для выравнивания вектора в режиме непрерывной работы иллюстрирует, как учитывать задержку при вычислении частоты ошибок.
В этом примере показана процедура использования режима непрерывной работы mlseeq функция в цикле.
Инициализация переменных
Укажите переменные времени выполнения.
numsym = 200; % Number of symbols in each iteration numiter = 25; % Number of iterations M = 4; % Use 4-PSK modulation qpskMod = comm.QPSKModulator('PhaseOffset',0); chcoeffs = [1 ; 0.25]; % Channel coefficients chanest = chcoeffs; % Channel estimate
Чтобы инициализировать эквалайзер, определите параметры для опорной совокупности, длину отслеживания, количество выборок на символ и переменные состояния. sm, ts, и ti.
const = qpskMod((0:M-1)'); tblen = 10; nsamp = 1; sm = []; ts = []; ti = [];
Определите переменные для накопления результатов из каждой итерации цикла.
fullmodmsg = []; fullfiltmsg = []; fullrx = [];
Моделирование системы с помощью цикла
Выполните моделирование в цикле, который генерирует случайные данные, модулирует данные с помощью модуляции PSK основной полосы частот и фильтрует данные. mlseeq функция выравнивает отфильтрованные данные. Цикл также обновляет переменные, накапливающие результаты каждой итерации цикла.
for jj = 1:numiter msg = randi([0 M-1],numsym,1); % Random signal vector modmsg = qpskMod(msg); % PSK-modulated signal filtmsg = filter(chcoeffs,1,modmsg); % Filtered signal % Equalize the signal. [rx,sm,ts,ti] = mlseeq(filtmsg,chanest,const, ... tblen,'cont',nsamp,sm,ts,ti); % Update vectors with cumulative results. fullmodmsg = [fullmodmsg; modmsg]; fullfiltmsg = [fullfiltmsg; filtmsg]; fullrx = [fullrx; rx]; end
Вычисление частоты ошибок и печать результатов
Вычислите частоту ошибок символов из всех итераций цикла. symerr функция сравнивает выбранные части принятых и переданных сигналов, а не все сигналы. Поскольку непрерывный режим работы влечет за собой задержку, длина которой в образцах является глубиной отслеживания (tblen) эквалайзера, исключить первый tblen выборки из принятого сигнала и последнего tblen выборки из передаваемого сигнала. Исключение выборок, которые представляют задержку эквалайзера, гарантирует, что вычисление частоты ошибок символов сравнивает выборки из принятых и переданных сигналов, которые являются значимыми и действительно соответствуют друг другу.
С учетом задержки вычислите общее количество ошибок символов.
hErrorCalc = comm.ErrorRate('ReceiveDelay',10);
err = step(hErrorCalc, fullmodmsg, fullrx);
numsymerrs = err(1)numsymerrs = 0
Постройте график сигнальной совокупности до и после выравнивания. Точки в выровненном сигнале совпадают с точками идеальной сигнальной совокупности для 4-PSK.
h = scatterplot(fullfiltmsg); hold on; scatterplot(fullrx,1,0,'r*',h); legend('Filtered signal before equalization','Equalized signal',... 'Location','NorthOutside'); hold off;

Некоторые системы включают в себя последовательность известных символов в начале или конце набора данных. Известная последовательность в начале или конце называется преамбулой или постамблой соответственно. mlseeq функция может вместить преамбулу и постамблю, которые уже включены в его входной сигнал. При вызове функции преамбула и постамбль задаются как целочисленные векторы, представляющие последовательность известных символов путем индексирования в вектор созвездия сигнала. Например, вектор преамбулы [1 4 4] и 4-PSK созвездие сигналов [1 j -1 -j] указывает, что модулированный сигнал начинается с [1 -j -j].
Если система использует преамбулу без postamble, используйте вектор postamble [] при вызове mlseeq. Если система использует postamble без преамбулы, используйте вектор преамбулы [].
Восстановите сообщение, содержащее преамбулу, выровняйте сигнал и проверьте частоту ошибок символов.
Укажите порядок модуляции, глубину отслеживания корректора, количество выборок на символ, преамбулу и длину сообщения.
M = 4; tblen = 16; nsamp = 1; preamble = [3;1]; msgLen = 500;
Создайте эталонное созвездие.
const = pskmod(0:3,4);
Создание сообщения с использованием случайных данных и добавление преамбулы к сообщению. Модулировать случайные данные.
msgData = randi([0 M-1],msgLen,1); msgData = [preamble; msgData]; msgSym = pskmod(msgData,M);
Фильтрация данных по каналу искажения и добавление гауссова шума к сигналу.
chcoeffs = [0.623; 0.489+0.234i; 0.398i; 0.21];
chanest = chcoeffs;
msgFilt = filter(chcoeffs,1,msgSym);
msgRx = awgn(msgFilt,9,'measured');Выровнять принятый сигнал. Для конфигурирования эквалайзера предоставьте оценку канала, опорную совокупность, глубину отслеживания эквалайзера, режим работы, количество выборок на символ и преамбулу. Те же самые символы преамбулы появляются в начале вектора сообщения и в синтаксисе для mlseeq. Поскольку система не использует postamble, пустой вектор указывается в качестве последнего входного аргумента в этом mlseeq синтаксис.
Проверьте частоту символьных ошибок выровненного сигнала. Результаты выполнения варьируются из-за использования случайных чисел.
eqSym = mlseeq(msgRx,chanest,const,tblen,'rst',nsamp,preamble,[]);
[nsymerrs,ser] = symerr(msgSym,eqSym)nsymerrs = 8
ser = 0.0159
Блок выравнивания MLSE использует алгоритм Витерби для выравнивания линейно модулированного сигнала через дисперсный канал. Блок выводит оценку последовательности максимального правдоподобия (MLSE) сигнала, используя вашу оценку канала, смоделированного как фильтр конечного входного отклика (FIR). При использовании блока MLSE Equalizer задается оценка канала и совокупность сигналов входного сигнала. Кроме того, в качестве входных параметров блока корректора MLSE можно указать преамбулу ожидаемого входного сигнала и postamble.
Используйте эквалайзер оценки последовательности максимального правдоподобия (MLSE) для выравнивания эффектов многолучевого канала рэлеевского замирания. Эквалайзер MLSE вводит данные, которые прошли через изменяющийся во времени дисперсный канал и оценку канала. Оценка канала содержит динамически развивающиеся канальные коэффициенты двухпутного канала рэлеевского замирания.
Структура модели
Передатчик генерирует данные случайного сигнала QPSK.
Ухудшение канала включает в себя многолучевое замирание и AWGN.
Приемник применяет выравнивание MLSE и демодуляцию QPSK.
Модель использует области и расчет BER для отображения поведения системы.
Изучение примера модели

Экспериментирование с моделью
Bernoulli Binary Generator время выборки блока 5e-6 секунд соответствует скорости передачи битов 200 кбит/с и скорости передачи символов QPSK 100 кбит/с.
Multipath Rayleigh Fading Channel параметры блока:
Максимальный доплеровский сдвиг 30 Гц.
Дискретная задержка пути составляет [0 1e-5], что соответствует двум последовательным временам выборки входных данных символа QPSK. Эта задержка отражает простейший вектор задержки для двухканального канала.
Средний коэффициент усиления тракта равен [0 -10].
Средние коэффициенты усиления пути нормализуются до 0 дБ, так что средняя мощность, входящая в AWGN блок равен 1 Вт.
MLSE Equalizer блок имеет глубину отслеживания, равную 10. Измените эту глубину, чтобы изучить ее влияние на частоту битовых ошибок (BER).
QPSK демодулятор принимает N-by-1 входной кадр и генерирует 2N-by-1 выходной кадр. Этот выходной кадр и глубина отслеживания 10 приводит к задержке 20 бит. Модель выполняет основанную на кадрах обработку кадров, которые имеют 100 выборок на кадр. Из-за обработки на основе кадра в модели имеется собственная задержка в 100 бит. Объединенная задержка приема 120 устанавливается в параметре задержки приема блока вычисления частоты ошибок, выравнивая выборки.
Отображается вычисленный BER. Графики созвездия показывают созвездие до и после выравнивания.
BER = 0.033645

