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