ccsdsRSDecode

CCSDS-жалоба Декодера кода Рида-Соломона

    Описание

    пример

    [decoded,cnumerr,ccode] = ccsdsRSDecode(code,k) декодируйте принятый сигнал в code при помощи (255, k) Декодер Рида-Соломона (RS) с полиномом генератора, как определено в Консультативном комитете по системам космических данных (CCSDS) 131.0-B-3 раздел 4 [1]. k количество символов в декодированном сообщении. Функция возвращает декодированное сообщение code, decoded, количество исправленных ошибок, cnumerrи исправленную версию code, ccode.

    Описание декодирования кода RS CCSDS см. в разделе «Декодирование кода RS CCSDS».

    пример

    [decoded,cnumerr,ccode] = ccsdsRSDecode(code,k,i) задает глубину перемежения, i. code состоит из i Кодовые слова RS длиной 255 байт.

    [decoded,cnumerr,ccode] = ccsdsRSDecode(code,k,i,s) задает укороченную длину сообщения, s.

    Примеры

    свернуть все

    Сгенерируйте полноразмерное закодированное кодовое слово Рида-Соломона (RS), вводите случайные ошибки и декодируйте результат с помощью RS-декодера Консультативного комитета по системам космических данных (CCSDS).

    Сгенерируйте случайное сообщение длины k.

    k = 223;
    msg = randi([0 255],k,1);

    Закодируйте сообщение с помощью CCSDS RS энкодера.

    code = ccsdsRSEncode(msg,k);

    Сгенерируйте 15 символов случайной ошибки и 15 уникальных случайных местоположений, чтобы вставить эти ошибки.

    err = randi([1 255],15,1);
    errLoc = randperm(255,15);
    errVec = zeros(255,1);
    errVec(errLoc) = err;

    Введите символы ошибки в закодированное сообщение.

    rxBytes = bitxor(code,errVec);

    Декодируйте закодированные символы, введенные с ошибками, используя CCSDS RS декодер.

    [decoded,v,ccode] = ccsdsRSDecode(rxBytes, k);

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

    disp(v)
        15
    

    Сгенерируйте полноразмерное закодированное кодовое слово Рида-Соломона (RS), введите пакет erros и декодируйте результат с помощью RS-декодера Консультативного комитета по системам космических данных (CCSDS).

    Задайте длину сообщения k и глубина перемежения, i.

    k = 239;
    i = 5;

    Сгенерируйте вектор-столбец случайных бит сообщений. Закодируйте укороченное сообщение с помощью CCSDS RS энкодера.

    msg = randi([0 255],k*i,1);
    code = ccsdsRSEncode(msg,k,i);

    Сгенерируйте 30 символов случайной ошибки.

    err = randi([1 255],30,1);
    errVec = zeros(255*i,1);

    Введите ошибки пакетной передачи из местоположения 52 в 81.

    errVec(52:81) = err;
    rxBytes = bitxor(code,errVec);

    Декодируйте закодированные символы, введенные с ошибками пакета, используя декодер RS CCSDS.

    [decoded,v,ccode] = ccsdsRSDecode(rxBytes,k,i);

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

    disp(v)
        30
    

    Входные параметры

    свернуть все

    Закодированное сообщение, заданное как вектор-столбец из целых чисел в области значений [0, 255].

    Элементы и размер вектора-столбца зависят от типа данных входов сообщения.

    • Для логического типа данных каждый элемент в векторе является либо 0, либо 1.

    • Для типа данных uint8 или double каждый элемент является целочисленным символом в GF (2m), в области значений [0, 255]. m - количество бит в каждом символе.

    Вход сообщенияРазмер code
    Тип данных code Является логическимТип данных code Является uint8 или double
    Полноразмерное входное сообщение8*255 255
    Перемеженное входное сообщение8*255* i 255* i
    Сокращенное входное сообщение8* i* (255 – k + s)i* (255 – k + s)

    Типы данных: double | uint8 | logical

    Количество символов в декодированном сообщении, заданное как 223 или 239.

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

    Глубина чередования, заданная как 1, 2, 3, 4, 5, или 8. Значение по умолчанию, 1, не соответствует никакому перемежению.

    code состоит из i Кодовые слова RS длиной 255 байт.

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

    Укороченная длина сообщения, заданная в виде целого числа в области значений [1 k].

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

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

    свернуть все

    Декодированное сообщение, возвращенное как вектор-столбец. Каждый элемент представляет декодирование соответствующего элемента во входных code. Тип данных decoded является тем же самым, что и у code.

    Размер вектора-столбца зависит от типа данных code.

    Вход сообщенияРазмер decoded
    Тип данных code Является логическимТип данных code Является uint8 или double
    Полноразмерное входное сообщение8* k k
    Перемеженное входное сообщение8* k* i k* i
    Сокращенное входное сообщение8* s* i s* i

    Когда значение выхода cnumerr является –1, decoded равно первому k элементы code.

    Количество исправленных ошибок, возвращенных в виде целого числа в области значений [-1, (nk) ∕ 2], где n - длина кодового слова. Значение n устанавливается равным 255 согласно CCSDS 131.0-B-3 раздел 4 [1].

    Значение –1 в cnumerr указывает на отказ декодера исправить ошибки.

    Исправленная версия кода, возвращенная как вектор-столбец. Длина ccode совпадает с длиной code. Тип данных ccode является тем же самым, что и у code.

    Когда значение выхода cnumerr является –1, ccode равно code.

    Подробнее о

    свернуть все

    Декодирование кода RS CCSDS

    Коды RS CCSDS являются мощными кодами исправления ошибок пакета. Они чаще всего используются в качестве кодов с прямой коррекцией ошибок (FEC), так как они обнаруживают и исправляют ошибки на уровне символов.

    Декодирование полноразмерных сообщений CCSDS RS Коды

    Как и кодирование, декодирование кодов RS CCSDS также выполняется по строкам. Вход длины вектора является продукт глубины перемежения (i) и длины кодового слова (n). n фиксируется на 255 символах согласно CCSDS 131.0-B-3 раздел 4 [1]. Входной вектор состоит из символов сообщения и четности.

    Decoding of full-length CCSDS RS codes

    Декодирование сокращенных кодов RS CCSDS сообщений

    Как и кодирование, декодирование кодов RS CCSDS также выполняется по строкам. Вход длины вектора является продукт глубины перемежения (i) и значения, вычисленного n - k + s. Входной вектор состоит из укороченного сообщения и символов четности.

    Decoded shortened CCSDS RS codes

    Ссылки

    [1] Синхронизация TM и кодирование канала. Рекомендация по стандартам системы космических данных. CCSDS 131.0-B-3. Синяя книга. Выпуск 3. Вашингтон, округ Колумбия: CCSDS, сентябрь 2017 года.

    Расширенные возможности

    Генерация кода C/C + +
    Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

    .

    См. также

    Функции

    Объекты

    Введенный в R2021a
    Для просмотра документации необходимо авторизоваться на сайте