Компенсируйте линейно модулируемый сигнал с помощью MLSE
y = mlseeq(x,chcffs,const,tblen,opmode)y = mlseeq(___,nsamp)y = mlseeq(___,nsamp,preamble,postamble)y = mlseeq(___,nsamp,init_metric,init_states,init_inputs)[y,final_metric,final_states,final_inputs] = mlseeq(___) компенсирует вектор основополосного сигнала y = mlseeq(x,chcffs,const,tblen,opmode)x с помощью оценки последовательности наибольшего правдоподобия (MLSE). chcffs обеспечивает оцененные коэффициенты канала. const обеспечивает идеальные точки сигнального созвездия. tblen задает traceback глубину. opmode задает режим работы эквалайзера. MLSE реализован с помощью Алгоритма Viterbi.
задает количество выборок на символ в 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' только. Для получения дополнительной информации смотрите Инициализацию в Непрерывном Режиме работы.
[ возвращает нормированные итоговые метрики состояния вероятности, финал traceback состояния и финал traceback входные параметры в конце traceback декодирование процесса, с помощью любого из предыдущих синтаксисов входного параметра. Этот синтаксис применяется, когда y,final_metric,final_states,final_inputs] = mlseeq(___)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. Поскольку система не использует постиноходи, пустой вектор iis заданный как последний входной параметр в этом синтаксисе mlseeq.
Проверяйте коэффициент ошибок символа компенсируемого сигнала. Выполнение-к-управляемому esults отличается из-за использования случайных чисел.
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 Входной сигналВходной сигнал, заданный как вектор модулируемых символов. Длина вектора x должна быть целочисленным кратным nsamp.
Типы данных: double
Поддержка комплексного числа: Да
chcffs — Коэффициенты каналаКоэффициенты канала, заданные как вектор. Коэффициенты канала обеспечивают оценку ответа канала. Когда nsamp> 1, вход chcffs задает сверхдискретизированные коэффициенты канала.
Типы данных: double
Поддержка комплексного числа: Да
const — Ссылочная совокупностьСсылочная совокупность, заданная как вектор с элементами M. M является порядком модуляции. const перечисляет идеальные точки сигнального созвездия в последовательности, используемой модулятором.
Типы данных: double
Поддержка комплексного числа: Да
tblen — Глубина TracebackГлубина Traceback, заданная как положительное целое число. Эквалайзер прослеживает от состояния вероятности с максимальной метрикой.
Типы данных: double
opmode — Режим работы'rst' | 'cont'Режим работы, заданный как 'rst' или 'cont'.
| Значение | Использование |
|---|---|
'rst' | Запустите эквалайзер с помощью рабочего режима сброса. Позволяет вам задать |
'cont' | Запустите эквалайзер с помощью непрерывного рабочего режима. Позволяет вам сохранить информацию внутреннего состояния эквалайзера для использования в последующем вызове этой функции. Непрерывный рабочий режим полезен, если входной сигнал разделен в поток пакетов, обработанных в цикле. Этот рабочий режим подвергается выходной задержке символов |
Типы данных: char
nsamp — Количество выборок на символ1 (значение по умолчанию) | положительное целое числоКоличество выборок на символ, заданный как положительное целое число. nsamp является фактором сверхдискретизации.
Входной сигнал, x, должен быть целочисленным кратным nsamp.
Типы данных: double
preamble — Преамбула входного сигналаПреамбула входного сигнала, заданная как вектор целых чисел между 0 и M –1, где M является порядком модуляции. Чтобы не использовать преамбулу, задайте [].
Для получения дополнительной информации см. Преамбулу и Постиноходь в Режиме работы Сброса.
Этот входной параметр применяется только, когда opmode установлен в 'rst'.
Типы данных: double
postamble — Постиноходь входного сигналаПостиноходь входного сигнала, заданная как вектор целых чисел между 0 и M –1, где M является порядком модуляции. Чтобы не использовать постиноходь, задайте [].
Для получения дополнительной информации см. Преамбулу и Постиноходь в Режиме работы Сброса.
Этот входной параметр применяется только, когда opmode установлен в 'rst'.
Типы данных: double
init_metric — Метрики начального состоянияМетрики начального состояния, заданные как вектор-столбец с N, утверждают элементы. Для описания состояний N смотрите Количество состояний Вероятности.
Для получения дополнительной информации смотрите Инициализацию в Непрерывном Режиме работы.
Этот входной параметр применяется только, когда opmode установлен в 'cont'. При определении [] для init_metric необходимо также задать [] для init_states и init_inputs.
Типы данных: double
init_states — Начальная буква traceback состоянияНачальная буква traceback состояния, заданные как N states-by-tblen матрица целых чисел со значениями между 0 и N, утверждает 1. Для описания состояний N смотрите Количество состояний Вероятности.
Для получения дополнительной информации смотрите Инициализацию в Непрерывном Режиме работы.
Этот входной параметр применяется только, когда opmode установлен в 'cont'. При определении [] для init_states необходимо также задать [] для init_metric и init_inputs.
Типы данных: double
init_inputs — Начальная буква traceback входные параметры[] (значение по умолчанию) | матрица целых чиселНачальная буква traceback входные параметры, заданные как N states-by-tblen матрица целых чисел со значениями между 0 и M –1. Для описания состояний N смотрите Количество состояний Вероятности.
Для получения дополнительной информации смотрите Инициализацию в Непрерывном Режиме работы.
Этот входной параметр применяется только, когда opmode установлен в 'cont'. При определении [] для init_inputs необходимо также задать [] для init_metric и init_states.
Типы данных: double
y Выходной сигналВыходной сигнал, возвращенный как вектор модулируемых символов.
final_metric — Финал нормированные метрики состоянияФинал нормированные метрики состояния, возвращенные как вектор с N, утверждает элементы. final_metric соответствует метрикам конечного состояния в конце traceback декодирование процесса. Для описания состояний N смотрите Количество состояний Вероятности.
Для получения дополнительной информации смотрите Инициализацию в Непрерывном Режиме работы.
final_states — Финал traceback состоянияФинал traceback состояния, возвращенные как N states-by-tblen матрица целых чисел со значениями между 0 и N, утверждает 1. final_states соответствует финалу traceback состояния в конце traceback декодирование процесса. Для описания состояний N смотрите Количество состояний Вероятности.
Для получения дополнительной информации смотрите Инициализацию в Непрерывном Режиме работы.
final_inputs — Финал traceback входные параметрыФинал traceback входные параметры, возвращенные как N states-by-tblen матрица целых чисел со значениями между 0 и M –1. final_inputs соответствует финалу traceback входные параметры в конце traceback декодирование процесса. M является порядком модуляции. Для описания состояний N смотрите Количество состояний Вероятности.
Для получения дополнительной информации смотрите Инициализацию в Непрерывном Режиме работы.
Алгоритм Viterbi является последовательным алгоритмом поиска решетки, используемым, чтобы выполнить обнаружение последовательности наибольшего правдоподобия.
Эквалайзер MLSE использует алгоритм Viterbi, чтобы рекурсивно искать последовательности, которые максимизируют функцию правдоподобия. Используя Viterbi алгоритм сокращает количество последовательностей в поиске решетки путем устранения последовательностей, когда новые данные получены. Метрика, используемая, чтобы определить последовательность наибольшего правдоподобия, является корреляцией между полученным сигналом и предполагаемым сигналом для каждого полученного символа по Количеству состояний Вероятности.
При работе эквалайзером 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_metric | init_metric | Метрики состояния | 1 Nstates | Вещественные числа |
final_states | init_states | Трэсебэк утверждает | N states-by-tblen | Целые числа между 0 и N утверждают 1 |
fianl_inputs | init_inputs | Входные параметры Traceback | N 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.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.