Восстановите биты данных с поля данных DMG
восстанавливает биты данных, учитывая поле данных от передачи DMG (OFDM, одно поставщик услуг или управление PHY), шумовая оценка отклонения и объект настройки DMG.dataBits
= wlanDMGDataBitRecover(rxDataSig
,noiseVarEst
,cfg
)
использует информацию состояния канала, указанную в dataBits
= wlanDMGDataBitRecover(rxDataSig
,noiseVarEst
,csi
,cfg
)csi
улучшать demapping поднесущих OFDM.
задает опции алгоритма при помощи одного или нескольких аргументов пары "имя-значение". Когда вы не задаете пару "имя-значение", функция использует значение по умолчанию.dataBits
= wlanDMGDataBitRecover(___,Name,Value
)
Восстановите информационные биты с Поля данных DMG в передаче Управления.
Передатчик
Создайте объект настройки DMG со схемой модуляции и кодирования (MCS) для Управления настройка PHY.
cfgDMG = wlanDMGConfig('MCS',0);
Создайте входную последовательность битов данных и сгенерируйте форму волны DMG.
txBits = randi([0 1],cfgDMG.PSDULength*8,1,'int8');
tx = wlanWaveformGenerator(txBits,cfgDMG);
Получатель
Примите, что передача проходит через бесшумный канал.
rx = tx;
Извлеките заголовок и поле данных при помощи wlanFieldIndices
функция.
ind = wlanFieldIndices(cfgDMG); rxSym = rx(ind.DMGHeader(1):ind.DMGData(2));
De-rotate полученный сигнал 90 градусами и despread это с распространяющимся фактором 32. Сгенерируйте последовательность Golay при помощи wlanGolaySequence
функция.
rxSym = rxSym.*exp(-1i*pi/2*(0:size(rxSym,1)-1).'); sf = 32; Ga = wlanGolaySequence(sf); rxSymDespread = (reshape(rxSym,sf,length(rxSym)/sf)'*Ga)/sf;
Восстановите PSDU с Поля данных DMG.
rxBits = wlanDMGDataBitRecover(rxSymDespread,0,cfgDMG);
Подтвердите, что декодируемые биты совпадают с исходными информационными битами.
disp(isequal(txBits,rxBits))
1
Восстановите информационные биты с Поля данных DMG передачи OFDM.
Передатчик
Создайте объект настройки DMG со схемой модуляции и кодирования (MCS) для OFDM PHY.
cfg = wlanDMGConfig('MCS',14);
Создайте входную последовательность битов данных и сгенерируйте форму волны DMG.
txBits = randi([0 1],8*cfg.PSDULength,1,'int8');
tx = wlanWaveformGenerator(txBits,cfg);
Канал
Установите ОСШ 10 дБ, вычислите шумовую степень (шумовое отклонение) и добавьте AWGN в форму волны.
snr = 10; nVar = 10^(-snr/10); rx = awgn(tx,snr);
Получатель
Извлеките поле данных DMG.
ind = wlanFieldIndices(cfg); rxData = rx(ind.DMGData(1):ind.DMGData(2));
Выполните демодуляцию OFDM на полученной форме волны, затем извлеките поднесущие данных.
sym = wlanDMGOFDMDemodulate(rxData); info = wlanDMGOFDMInfo; rxSym = sym(info.DataIndices,:);
Восстановите PSDU с Поля данных DMG, приняв оценку CSI из всех единиц.
csi = ones(length(info.DataIndices),1); rxBits = wlanDMGDataBitRecover(rxSym,nVar,csi,cfg);
Подтвердите, что декодируемые биты совпадают с исходными информационными битами.
disp(isequal(txBits,rxBits));
1
Восстановите информационные биты с Поля данных DMG в передаче одно поставщика услуг (SC).
Передатчик
Создайте объект настройки DMG со схемой модуляции и кодирования (MCS) для SC PHY.
cfg = wlanDMGConfig('MCS',10);
Создайте входную последовательность битов данных и сгенерируйте форму волны DMG.
txBits = randi([0 1],8*cfg.PSDULength,1,'int8');
tx = wlanWaveformGenerator(txBits,cfg);
Канал AWGN
Установите ОСШ 10 дБ, вычислите шумовую степень (шумовое отклонение) и добавьте AWGN в форму волны при помощи awgn
функция.
SNR = 10; nVar = 10^(-SNR/10); rx = awgn(tx,SNR);
Получатель
Извлеките поле данных.
ind = wlanFieldIndices(cfg); rxData = rx(ind.DMGData(1):ind.DMGData(2));
Измените полученную форму волны данных в блоки. Установите размер блока данных на 512 и защитную длину интервала к 64. Удалите последний защитный интервал из полученной формы волны данных. Получившаяся форма волны данных является 512 Nblks
матрица, где Nblks
количество данных DMG blocks.
blkSize = 512; Ngi = 64; rxData = rxData(1:end-Ngi); rxData = reshape(rxData,blkSize,[]);
Удалите защитный интервал из каждого блока. Получившийся сигнал является 448 Nblks
матрица, как ожидалось для временного интервала Поле данных DMG сигнализируют в SC о настройке PHY.
rxSym = rxData(Ngi+1:end,:); disp(size(rxSym))
448 9
Восстановите PSDU с Поля данных DMG, задав разделенное на уровни распространение веры декодирование LDPC.
rxBits = wlanDMGDataBitRecover(rxSym,nVar,cfg,'LDPCDecodingMethod','layered-bp');
Подтвердите, что декодируемые биты совпадают с исходными информационными битами.
disp(isequal(txBits,rxBits))
1
rxDataSig
— Полученный сигнал поля данных DMGПолученные данные DMG сигнализируют в виде действительной или комплексной матрицы. Содержимое и размер rxDataSig
зависьте от физического уровня (PHY):
Одно поставщик услуг PHY — rxDataSig
временной интервал сигнал поля данных DMG в виде 448 NBLKS матрицей действительных или комплексных чисел. Значение 448 является количеством символов в символе данных DMG и N, BLKS является количеством блоков данных DMG.
OFDM PHY — rxDataSig
демодулируемое поле данных DMG символы OFDM в виде 336 NSYM матрицей действительных или комплексных чисел. Значение 336 является количеством поднесущих данных в поле данных DMG и N, SYM является количеством символов OFDM.
Управляйте PHY — rxDataSig
сигнал временной области, содержащий заголовок и поля данных в виде вектор-столбца B-1 N действительных или комплексных чисел, где N B является количеством despread символов.
Типы данных: double
Поддержка комплексного числа: Да
noiseVarEst
— Шумовая оценка отклоненияШумовая оценка отклонения в виде неотрицательного скаляра.
Типы данных: double
cfg
— Настройка DMG PPDUwlanDMGConfig
объектНастройка DMG PPDU в виде wlanDMGConfig
объект.
csi
— Информация о состоянии каналаИнформация о состоянии канала в виде 336 1 вектор-столбца с действительным знаком. Значение 336 задает количество поднесущих данных в поле данных DMG. csi
требуется только для OFDM PHY.
Типы данных: double
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'MaximumLDPCIterationCount','12','EarlyTermination','false'
задает максимум 12 LDPC декодирование итераций и отключает раннее завершение так, чтобы декодер завершил эти 12 итераций.'LDPCDecodingMethod'
— LDPC декодирование алгоритма'bp'
(значение по умолчанию) | 'layered-bp'
| 'norm-min-sum'
| 'offset-min-sum'
LDPC декодирование алгоритма в виде разделенной запятой пары, состоящей из 'LDPCDecodingMethod'
и одно из этих значений:
'bp'
— Используйте алгоритм декодирования распространения веры (BP). Для получения дополнительной информации смотрите, что Распространение Веры Декодирует.
'layered-bp'
— Используйте многоуровневый алгоритм декодирования BP, подходящий для квазициклических матриц проверки четности (PCMs). Для получения дополнительной информации смотрите, что Многоуровневое Распространение Веры Декодирует.
'norm-min-sum'
— Используйте многоуровневый алгоритм декодирования BP нормированным приближением суммы min. Для получения дополнительной информации смотрите, что Нормированная Сумма Min Декодирует.
'offset-min-sum'
— Используйте многоуровневый алгоритм декодирования BP приближением суммы min смещения. Для получения дополнительной информации смотрите, что Сумма Min Смещения Декодирует.
Типы данных: char |
string
'MinSumScalingFactor'
— Масштабный коэффициент за нормированную сумму min декодирование LDPC
(значение по умолчанию) | скаляр в интервале (0, 1]Масштабный коэффициент за нормированную сумму min LDPC, декодирующий в виде скаляра в интервале (0, 1].
Чтобы включить этот аргумент, задайте '
LDPCDecodingMethod
'
аргумент пары "имя-значение" как 'norm-min-sum'
.
Типы данных: double
'MinSumOffset'
— Возместите за сумму min смещения декодирование LDPC
(значение по умолчанию) | неотрицательный скалярВозместите за сумму min смещения LDPC, декодирующий в виде неотрицательного скаляра.
Чтобы включить этот аргумент, задайте '
LDPCDecodingMethod
'
аргумент пары "имя-значение" как 'offset-min-sum'
.
Типы данных: double
'MaximumLDPCIterationCount'
— Максимальное количество LDPC декодирование итераций
(значение по умолчанию) | положительное целое числоМаксимальное количество LDPC декодирование итераций в виде положительного целого числа.
Типы данных: double
'EarlyTermination'
— Включите раннее завершение декодирования LDPCfalse
или 0
(значение по умолчанию) | true
или 1
Включите раннее завершение LDPC, декодирующего в виде 1
TRUE
) или 0
ложь
).
Когда вы устанавливаете это значение к 0
ложь
), декодирование LDPC завершает количество итераций, заданных 'MaximumLDPCIterationCount'
независимо от состояния проверки четности.
Когда вы устанавливаете это значение к 1
TRUE
), декодирование LDPC завершает работу, когда всем проверкам четности удовлетворяют.
Типы данных: логический
dataBits
— Восстановленные информационные биты в поле данных DMG
| 0
| вектор-столбец с бинарным знакомВосстановленные информационные биты от поля данных DMG, возвращенного как вектор-столбец с бинарным знаком длины 8 × cfgDMG.PSDULength
. Смотрите wlanDMGConfig
для PSDULength
детали.
Типы данных: int8
Формат DMG поддерживает три физических уровня (PHY) схемы модуляции: управляйте, один поставщик услуг и OFDM. data field является переменным в длине. Это выполняет ту же функцию для трех ФИЗИК и несет пользовательскую полезную нагрузку данных.
Для SC PHY каждый блок в поле данных является 512 символами долго и с защитным интервалом (GI) 64 символов с Последовательностью Golay. Для OFDM каждый символ OFDM в поле данных является 640 выборками долго и с циклическим префиксом (CP) 128 выборок, чтобы предотвратить интерференцию межсимвола.
IEEE 802.11ad™-2012 задает общие аспекты пакетной структуры DMG PPDU в Разделе 21.3. Специфичные для модуляции аспекты PHY структуры поля данных заданы в этих разделах:
Пакетная структура управления DMG PHY задана в Разделе 21.4.
Пакетная структура DMG OFDM PHY задана в Разделе 21.5.
SC DMG пакетная структура PHY задан в Разделе 21.6.
wlanDMGDataBitRecover
функционируйте поддерживает эти четыре LDPC декодирование алгоритмов.
wlanDMGDataBitRecover
функционируйте реализует алгоритм BP на основе алгоритма декодирования, представленного в [2]. Для переданной LDPC-закодированной кодовой комбинации , вход к декодеру LDPC является отношением логарифмической правдоподобности (LLR), данным
.
В каждой итерации функция обновляет ключевые компоненты алгоритма на основе этих уравнений:
,
, инициализированный как перед первой итерацией, и
.
В конце каждой итерации, обновленная оценка значения LLR для переданного бита, . Значение мягкое решение выход для . Если отрицательно, трудное решение выход для 1. В противном случае выход 0.
Индексируйте наборы и основаны на PCM, таким образом что наборы и соответствуйте всем ненулевым элементам в столбце i и строка j PCM, соответственно.
Этот рисунок демонстрирует, как вычислить эти наборы индекса для PCM для случая i = 5 и j = 3.
Чтобы избежать бесконечных чисел в уравнениях алгоритма, atanh (1) и atanh (–1) установлены в 19,07 и –19.07, соответственно. Из-за конечной точности, MATLAB® возвращается 1 для tanh (19.07) и –1 для tanh (–19.07).
Когда вы задаете '
EarlyTermination
'
аргумент пары "имя-значение" как 0
ложь
), декодирование завершает работу после количества итераций, заданных '
MaximumLDPCIterationCount
'
аргумент пары "имя-значение". Когда вы задаете '
EarlyTermination
'
аргумент пары "имя-значение" как 1
TRUE
), декодирование завершает работу, когда всем проверкам четности удовлетворяют () или после того, как количество итераций задано '
MaximumLDPCIterationCount
'
аргумент пары "имя-значение".
wlanDMGDataBitRecover
функционируйте реализует многоуровневый алгоритм BP на основе алгоритма декодирования, представленного в Разделе II.A [3]. Цикл декодирования выполняет итерации по подмножествам строк (слои) PCM. Для каждой строки, m, в слое и каждом битном индексе, j, реализация обновляет ключевые компоненты алгоритма на основе этих уравнений.
(1)
(2)
(3)
(4)
(5)
(6)
Для каждого слоя уравнение декодирования (6) работает над объединенным входом, полученным из текущих входных параметров LLR, , и предыдущие обновления слоя, .
Поскольку многоуровневый алгоритм BP обновляет только подмножество узлов в слое, этот алгоритм быстрее, чем алгоритм BP. Чтобы достигнуть того же коэффициента ошибок, как достигнуто с декодированием BP, используйте половину количества декодирования итераций при использовании многоуровневого алгоритма BP.
wlanDMGDataBitRecover
функционируйте реализует нормированный алгоритм декодирования суммы min следующим многоуровневый алгоритм BP уравнением (3) замененный
,
где α является масштабным коэффициентом, заданным '
MinSumScalingFactor
'
аргумент пары "имя-значение". Это уравнение является адаптацией уравнения (4) представленный в [4].
wlanDMGDataBitRecover
функционируйте реализует алгоритм декодирования суммы min смещения следующим многоуровневый алгоритм BP уравнением (3) замененный
,
где β является смещением, заданным '
MinSumOffset
'
аргумент пары "имя-значение". Это уравнение является адаптацией уравнения (5) представленный в [4].
[1] STD IEEE 802.11ad-2012 (Поправка к Станд. IEEE 802.11™-2012, как исправлено Станд. IEEE 802.11ae™-2012 и Станд. IEEE 802.11a™-2012). “Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования. Поправка 4: Улучшения для Очень Высокой Операции Пропускной способности в Полосах ниже 6 ГГц”. Стандарт IEEE для Информационных технологий — Телекоммуникации и обмен информацией между системами. Локальные сети и городские компьютерные сети — Конкретные требования.
[2] Gallager, Роберт Г. Имеющие малую плотность коды с проверкой четности. Кембридж, MA: нажатие MIT, 1963.
[3] Hocevar, D.E. "Уменьшаемая Архитектура Декодера Сложности через Многоуровневое Декодирование Кодов LDPC". В Семинаре IEEE по Системам Обработки сигналов, 2004. ГЛОТКИ 2004., 107-12. Остин, Техас, США: IEEE, 2004. https://doi.org/10.1109/SIPS.2004.1363033.
[4] Джингу Чен, R.M. Крем для загара, К. Джонс и Ян Ли. "Улучшенные алгоритмы декодирования суммы Min для неправильных кодов LDPC". В продолжениях. Международный симпозиум по теории информации, 2005. ISIT 2005., 449-53, 2005. https://doi.org/10.1109/ISIT.2005.1523374.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.