mlseeq

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

Описание

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

пример

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

пример

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

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

пример

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

Примеры

свернуть все

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

Задайте порядок модуляции, эквалайзер traceback глубина, количество выборок на символ и длина сообщения.

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');

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

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

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

Восстановите сообщение, которое включает преамбулу, компенсируйте сигнал и проверяйте коэффициент ошибок символа.

Задайте порядок модуляции, эквалайзер traceback глубина, количество выборок на символ, преамбулу и длину сообщения.

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');

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

Проверяйте коэффициент ошибок символа компенсируемого сигнала. Результаты запуска-к-управляемому варьируются из-за использования случайных чисел.

eqSym = mlseeq(msgRx,chanest,const,tblen,'rst',nsamp,preamble,[]);
[nsymerrs,ser] = symerr(msgSym,eqSym)
nsymerrs = 8
ser = 0.0159

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

Задайте порядок модуляции, эквалайзер traceback глубина, количество выборок на символ, длину сообщения и количество пакетов к процессу.

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');

Компенсируйте полученные символы. Чтобы сконфигурировать эквалайзер, обеспечьте оценку канала, ссылочное созвездие, эквалайзер traceback глубина, рабочий режим, количество выборок на символ и информация об инициализации эквалайзера. Непрерывный рабочий режим задан для эквалайзера. В непрерывном рабочем режиме информация об инициализации эквалайзера (метрика, состояния и входные параметры) возвращается и используется в качестве входных параметров в следующей итерации 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
Поддержка комплексного числа: Да

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

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

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

ЗначениеИспользование
'rst'

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

'cont'

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

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

Количество выборок на символ, заданный как положительное целое число. nsamp фактор сверхдискретизации.

Зависимости

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

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

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

Для получения дополнительной информации см. Преамбулу и Постиноходь в Режиме работы Сброса.

Зависимости

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

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

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

Для получения дополнительной информации см. Преамбулу и Постиноходь в Режиме работы Сброса.

Зависимости

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

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

Метрики начального состояния, заданные как вектор-столбец с N, утверждают элементы. Для описания состояний N смотрите Количество состояний Вероятности.

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

Зависимости

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

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

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

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

Зависимости

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

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

Начальная буква traceback входные параметры, заданные как N states-by-tblen матрица целых чисел со значениями между 0 и M –1. Для описания состояний N смотрите Количество состояний Вероятности.

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

Зависимости

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

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

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

свернуть все

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

Финал нормированные метрики состояния, возвращенные как вектор с N, утверждает элементы. final_metric соответствует метрикам конечного состояния в конце traceback декодирование процесса. Для описания состояний N смотрите Количество состояний Вероятности.

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

Финал traceback состояния, возвращенные как N states-by-tblen матрица целых чисел со значениями между 0 и N утверждает 1. final_states соответствует финалу traceback состояния в конце traceback декодирование процесса. Для описания состояний N смотрите Количество состояний Вероятности.

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

Финал traceback входные параметры, возвращенные как N states-by-tblen матрица целых чисел со значениями между 0 и M –1. final_inputs соответствует финалу traceback входные параметры в конце traceback декодирование процесса. M является порядком модуляции. Для описания состояний N смотрите Количество состояний Вероятности.

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

Больше о

свернуть все

Алгоритм Viterbi

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

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

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

Преамбула и постиноходь в режиме работы сброса

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

Когда функция применяет алгоритм Viterbi, она инициализирует метрики состояния способом, который зависит от того, задаете ли вы преамбулу, постиноходь или обоих:

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

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

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

  • Если postamble [], traceback путь запускается в состоянии с самой маленькой метрики.

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

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

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

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

Выходной аргументВходной параметрЗначениеMatrixSize Область значений значений
final_metricinit_metricМетрики состояния1 NstatesВещественные числа
final_statesinit_statesТрэсебэк утверждаетN states-by-tblenЦелые числа между 0 и N утверждают 1
fianl_inputsinit_inputsВходные параметры TracebackN states-by-tblenЦелые числа между 0 и M –1

Использовать значения по умолчанию в init_metric, init_states, и init_inputs, задайте каждого как []. Для описания состояний N смотрите Количество состояний Вероятности.

Количество состояний вероятности

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

Ссылки

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

[2] Стил, Рэймонд, Эд. Коммуникации рации. Чичестер, Англия: John Wiley & Sons, 1996.

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