exponenta event banner

mlseeq

Уравнять линейно модулированный сигнал с помощью MLSE

Описание

y = mlseeq(x,chcffs,const,tblen,opmode) выравнивает вектор сигнала основной полосы частот x используя оценку последовательности максимального правдоподобия (MLSE). chcffs обеспечение оцененных коэффициентов канала. const обеспечивает идеальные точки объединения сигналов. tblen указывает глубину отката трассы. opmode определяет режим работы эквалайзера. MLSE реализован с использованием алгоритма Витерби.

пример

y = mlseeq(___,nsamp) указывает количество выборок на символ в x, в дополнение к аргументам в предыдущем синтаксисе.

пример

y = mlseeq(___,nsamp,preamble,postamble) указывает количество выборок на символ в x, преамбула и postamble, в дополнение к аргументам в первом синтаксисе. Этот синтаксис применяется, когда opmode является 'rst' только. Дополнительные сведения см. в разделах Преамбула и Постамбль в режиме перезагрузки.

y = mlseeq(___,nsamp,init_metric,init_states,init_inputs)указывает количество выборок на символ в x, метрики начального состояния правдоподобия, начальные состояния отслеживания и начальные входные данные отслеживания для эквалайзера в дополнение к аргументам в первом синтаксисе. Эти три входа обычно являются final_metric, final_states, и final_inputs результаты предыдущего вызова этой функции. Этот синтаксис применяется, когда opmode является 'cont' только. Дополнительные сведения см. в разделе Инициализация в режиме непрерывной работы.

пример

[y,final_metric,final_states,final_inputs] = mlseeq(___) возвращает нормализованные окончательные метрики состояния правдоподобия, окончательные состояния отслеживания и окончательные входные данные отслеживания в конце процесса декодирования отслеживания, используя любой из предыдущих синтаксисов входных аргументов. Этот синтаксис применяется, когда opmode является 'cont' только. Дополнительные сведения см. в разделе Инициализация в режиме непрерывной работы.

Примеры

свернуть все

Используйте рабочий режим сброса mlseeq эквалайзер. Демодулируйте сигнал и проверьте частоту битовых ошибок.

Укажите порядок модуляции, глубину отслеживания корректора, количество выборок на символ и длину сообщения.

M = 2;
tblen =  10; 
nsamp = 2;
msgLen = 1000;

Создайте эталонное созвездие.

const = pammod([0:M-1],M);

Создание сообщения со случайными данными. Модулируйте и увеличивайте частоту сигнала.

msgData = randi([0 M-1],msgLen,1); 
msgSym = pammod(msgData,M);
msgSymUp = upsample(msgSym,nsamp); 

Фильтрация данных по каналу искажения и добавление гауссова шума к сигналу.

chanest = [0.986; 0.845; 0.237; 0.12345+0.31i]; 
msgFilt = filter(chanest,1,msgSymUp); 
msgRx = awgn(msgFilt,5,'measured');

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

eqSym = mlseeq(msgRx,chanest,const,tblen,'rst',nsamp);
eqMsg = pamdemod(eqSym,M);

[nerrs ber] = biterr(msgData, eqMsg)
nerrs = 1
ber = 1.0000e-03

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

Укажите порядок модуляции, глубину отслеживания корректора, количество выборок на символ, преамбулу и длину сообщения.

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

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

Укажите порядок модуляции, глубину отслеживания корректора, количество выборок на символ, длину сообщения и количество обрабатываемых пакетов.

M = 4;
tblen =  10; 
nsamp = 1;
msgLen = 1000; 
numPkts = 25;

Создайте эталонное созвездие.

const = pskmod(0:M-1,M);

Установите начальные входные параметры для метрики, состояний и входов эквалайзера в пустые векторы. Эти начальные назначения представляют параметры для первого переданного пакета.

eq_metric = [];
eq_states = [];
eq_inputs = [];

Назначение переменных для статистики ошибок символов.

ttlSymbErrs = 0;
aggrPktSER = 0;

Отправка и получение нескольких пакетов сообщений в цикле моделирования. Между передачей пакета и приемом каждый пакет фильтруется через канал искажения и добавляется гауссов шум.

for jj = 1:numPkts

Создание сообщения со случайными данными. Модулируйте сигнал.

    msgData = randi([0 M-1],msgLen,1); 
    msgMod = pskmod(msgData,M); 

Фильтрация данных по каналу искажения и добавление гауссова шума к сигналу.

    chanest = [.986; .845; .237; .12345+.31i]; 
    msgFilt = filter(chanest,1,msgMod);
    msgRx = awgn(msgFilt,10,'measured');

Выравнивание полученных символов. Для конфигурирования эквалайзера предоставьте оценку канала, опорную совокупность, глубину отслеживания эквалайзера, режим работы, количество выборок на символ и информацию инициализации эквалайзера. Для эквалайзера задан непрерывный режим работы. В непрерывном режиме работы информация инициализации эквалайзера (метрика, состояния и входы) возвращается и используется в качестве входов в следующей итерации for цикл.

    [eqSym,eq_metric,eq_states,eq_inputs] = ...
        mlseeq(msgRx,chanest,const,tblen,'cont',nsamp, ...
        eq_metric,eq_states,eq_inputs);

Сохраните статистику ошибок символов. Обновите статистику ошибок символов с помощью агрегированных результатов. Отображение общего количества ошибок. Результаты могут отличаться, поскольку в этом примере используются случайные числа.

    [nsymerrs,ser] = symerr(msgMod(1:end-tblen),eqSym(tblen+1:end));
    ttlSymbErrs = ttlSymbErrs + nsymerrs;
    aggrPktSER = aggrPktSER + ser;
end
printTtlErr = 'A total of %d symbol errors over the %d packets received.\n';
fprintf(printTtlErr,ttlSymbErrs,numPkts);
A total of 155 symbol errors over the 25 packets received.

Отображение совокупной частоты ошибок символов.

printAggrSER = 'The aggregate symbol error rate was %6.5d.\n';
fprintf(printAggrSER,aggrPktSER/numPkts);
The aggregate symbol error rate was 6.26263e-03.

Входные аргументы

свернуть все

Входной сигнал, определяемый как вектор модулированных символов. Длина вектора x должно быть целым кратным nsamp.

Типы данных: double
Поддержка комплексного номера: Да

Коэффициенты канала, заданные как вектор. Коэффициенты канала обеспечивают оценку отклика канала. Когда nsamp > 1, chcffs вход определяет коэффициенты канала с избыточной выборкой.

Типы данных: double
Поддержка комплексного номера: Да

Опорная совокупность, заданная как вектор с M элементами. M - порядок модуляции. const перечисляет идеальные точки созвездия сигналов в последовательности, используемой модулятором.

Типы данных: double
Поддержка комплексного номера: Да

Глубина отслеживания, заданная как положительное целое число. Эквалайзер отслеживает состояние правдоподобия с максимальной метрикой.

Типы данных: double

Режим работы, указанный как 'rst' или 'cont'.

СтоимостьИспользование
'rst'

Запустить эквалайзер в режиме сброса. Позволяет указать preamble и postamble которые сопровождают входной сигнал. Функция обрабатывает входной сигнал, xнезависимо от входного сигнала от любого другого вызова этой функции. Этот режим работы не вызывает задержки на выходе. Дополнительные сведения см. в разделах Преамбула и Постамбль в режиме перезагрузки.

'cont'

Запустить эквалайзер на непрерывном режиме работы. Позволяет сохранить внутреннюю информацию о состоянии эквалайзера для последующего вызова этой функции. Непрерывный режим работы полезен, если входной сигнал разделен на поток пакетов, обрабатываемых в цикле. Этот рабочий режим имеет задержку на выходе, равную tblen символы. Дополнительные сведения см. в разделе Инициализация в режиме непрерывной работы.

Типы данных: char

Число выборок на символ, указанное как положительное целое число. nsamp - коэффициент избыточной выборки.

Зависимости

Входной сигнал, x, должно быть целым кратным nsamp.

Типы данных: double

Преамбула входного сигнала, заданная как вектор целых чисел между 0 и M-1, где M - порядок модуляции. Чтобы опустить преамбулу, укажите [].

Дополнительные сведения см. в разделах Преамбула и Постамбль в режиме перезагрузки.

Зависимости

Этот входной аргумент применяется только в том случае, если opmode имеет значение 'rst'.

Типы данных: double

Postamble входного сигнала, заданный как вектор целых чисел между 0 и M-1, где M - порядок модуляции. Чтобы пропустить почтовую рассылку, укажите [].

Дополнительные сведения см. в разделах Преамбула и Постамбль в режиме перезагрузки.

Зависимости

Этот входной аргумент применяется только в том случае, если opmode имеет значение 'rst'.

Типы данных: double

Метрика начального состояния, заданная как вектор столбца с элементами Nstates. Описание Nstates см. в разделе Количество состояний правдоподобия.

Дополнительные сведения см. в разделе Инициализация в режиме непрерывной работы.

Зависимости

Этот входной аргумент применяется только в том случае, если opmode имеет значение 'cont'. При указании [] для init_metric, необходимо также указать [] для init_states и init_inputs.

Типы данных: double

Начальные состояния отслеживания, указанные как Nstates-by-tblen матрица целых чисел со значениями от 0 до Nstates-1. Описание Nstates см. в разделе Количество состояний правдоподобия.

Дополнительные сведения см. в разделе Инициализация в режиме непрерывной работы.

Зависимости

Этот входной аргумент применяется только в том случае, если opmode имеет значение 'cont'. При указании [] для init_states, необходимо также указать [] для init_metric и init_inputs.

Типы данных: double

Исходные входные данные отслеживания, указанные как Nstates-by-tblen матрица целых чисел со значениями от 0 до M-1. Описание Nstates см. в разделе Количество состояний правдоподобия.

Дополнительные сведения см. в разделе Инициализация в режиме непрерывной работы.

Зависимости

Этот входной аргумент применяется только в том случае, если opmode имеет значение 'cont'. При указании [] для init_inputs, необходимо также указать [] для init_metric и init_states.

Типы данных: double

Выходные аргументы

свернуть все

Выходной сигнал, возвращаемый как вектор модулированных символов.

Окончательные нормализованные метрики состояния, возвращенные как вектор с элементами Nstates. final_metric соответствует метрикам конечного состояния в конце процесса декодирования отслеживания. Описание Nstates см. в разделе Количество состояний правдоподобия.

Дополнительные сведения см. в разделе Инициализация в режиме непрерывной работы.

Окончательные состояния отслеживания, возвращенные как Nstates-by-tblen матрица целых чисел со значениями от 0 до Nstates-1. final_states соответствует окончательным состояниям отслеживания в конце процесса декодирования отслеживания. Описание Nstates см. в разделе Количество состояний правдоподобия.

Дополнительные сведения см. в разделе Инициализация в режиме непрерывной работы.

Окончательные входные данные отслеживания, возвращенные как Nstates-by-tblen матрица целых чисел со значениями от 0 до M-1. final_inputs соответствует окончательным входам отслеживания в конце процесса декодирования отслеживания. M - порядок модуляции. Описание Nstates см. в разделе Количество состояний правдоподобия.

Дополнительные сведения см. в разделе Инициализация в режиме непрерывной работы.

Подробнее

свернуть все

Алгоритм Витерби

Алгоритм Витерби является последовательным алгоритмом поиска решетки, используемым для определения последовательности максимального правдоподобия.

Эквалайзер MLSE использует алгоритм Витерби для рекурсивного поиска последовательностей, которые максимизируют функцию правдоподобия. Использование алгоритма Витерби уменьшает количество последовательностей в поисковой решетке путем исключения последовательностей по мере получения новых данных. Метрикой, используемой для определения последовательности максимального правдоподобия, является корреляция между принятым сигналом и оцененным сигналом для каждого принятого символа по числу состояний правдоподобия.

Для получения дополнительной информации см. [1] и [2].

Преамбула и постамбль в режиме перезагрузки

При работе эквалайзера MLSE в режиме сброса можно указать преамбулу и postamble в качестве входных аргументов. Определить preamble и postamble в качестве векторов, равных преамбуле и постамбле, которые добавлены и добавлены соответственно к входному сигналу. preamble и postamble векторы состоят из целых чисел от 0 до M-1, где M - число элементов в const. Чтобы опустить preamble или postamble входной аргумент, укажите [].

Когда функция применяет алгоритм Витерби, она инициализирует метрику состояния таким образом, который зависит от того, укажите ли вы преамбулу, почтовую амбу или и то и другое:

  • Если preamble является непустым, функция декодирует преамбулу и присваивает метрику 0 декодированному состоянию. Если преамбула не декодируется до уникального состояния (то есть если длина преамбулы меньше, чем канальная память), декодер присваивает метрику 0 всем состояниям, которые представлены преамбулой. Путь отслеживания заканчивается в одном из состояний, представленных преамбулой.

  • Если preamble является []декодер инициализирует метрики всех состояний на 0.

  • Если postamble является непустым, путь отслеживания начинается в наименьшем из всех возможных декодированных состояний, которые представлены почтамблом.

  • Если postamble является []путь отслеживания начинается в состоянии с наименьшей метрикой.

Инициализация в режиме непрерывной работы

При работе эквалайзера MLSE в непрерывном режиме можно инициализировать выравнивание на основе значений, возвращенных в предыдущем вызове функции.

В конце процесса декодирования отслеживания функция возвращает final_metric, final_states, и final_inputs. Когда opmode является 'cont', назначить эти выходы init_metric, init_states, и init_inputs, соответственно для следующего вызова функции. Эти назначения инициализируют эквалайзер, чтобы начать с метрик конечного состояния, окончательных состояний отслеживания и окончательных входных данных отслеживания из предыдущего вызова функции.

Каждое вещественное число в init_metric представляет метрику начального состояния соответствующего состояния. init_states и init_inputs совместно указать начальную память отслеживания эквалайзера.

Выходной аргументВходной аргументЗначениеРазмер матрицыДиапазон значений
final_metricinit_metricМетрики состояния1-by-NstatesВещественные числа
final_statesinit_statesСостояния отслеживанияНштатес-по-tblenЦелые числа от 0 до Nstates-1
fianl_inputsinit_inputsВходные данные отслеживанияНштатес-по-tblenЦелые числа от 0 до M-1

Использование значений по умолчанию для init_metric, init_states, и init_inputs, укажите каждый как []. Описание Nstates см. в разделе Количество состояний правдоподобия.

Количество состояний правдоподобия

Число состояний правдоподобия, Nstates, является числом коррелятивных фазовых состояний в решетке. Nstates равен ML-1, где M - количество элементов в const и L - число символов в неперебранной импульсной характеристике канала.

Ссылки

[1] Proakis, John G. Digital Communications, четвертое издание. Нью-Йорк: Макгроу-Хилл, 2001.

[2] Стил, Рэймонд, Эд. Мобильная радиосвязь. Чичестер, Англия: John Wiley & Sons, 1996.

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