exponenta event banner

bsc

Бинарный симметричный канал

Описание

ndata = bsc(data,probability) передает двоичный входной сигнал data через бинарный симметричный канал, имеющий заданную вероятность ошибки. Канал вносит битовую ошибку и обрабатывает каждый элемент входа data независимо. data должен быть массивом двоичных чисел или массивом Галуа в GF (2 ).probability должен быть скаляром от 0 до 1.

ndata = bsc(data,probability,streamhandle) принимает случайный дескриптор потока для генерации однородных выборок шума с помощью rand. Предоставление случайного дескриптора потока или использование reset (RandStream) функция объекта случайного потока по умолчанию позволяет создавать повторяющиеся выборки шума. Дополнительные сведения см. в разделе RandStream.

ndata = bsc(data,probability,seed) принимает начальное значение для инициализации генератора равномерных случайных чисел, rand. Если вы хотите генерировать повторяющиеся выборки шума, то перед вызовом либо сбросьте вход случайного потока bsc или использовать тот же начальный ввод.

[ndata,err] = bsc(___) возвращает массив, содержащий ошибки канала, с использованием любого из предшествующих синтаксисов.

Примеры

свернуть все

Использование bsc функция, ввести битовые ошибки в биты в случайной матрице с вероятностью 0,15.

z = randi([0 1],100,100); % Random matrix
nz = bsc(z,.15); % Binary symmetric channel
[numerrs, pcterrs] = biterr(z,nz) % Number and percentage of errors
numerrs = 1509
pcterrs = 0.1509

Ниже приведены типичные выходные данные. Для относительно небольших наборов данных процент битовых ошибок не составляет точно 15% в большинстве испытаний. Если размер матрицы z велик, процент битовых ошибок будет ближе к указанной вами точной вероятности.

Использование bsc функция, ввести битовые ошибки в биты в случайной матрице с вероятностью 0,01. Декодер Витерби используется для декодирования данных сообщения.

Определите решетку для декодера Витерби. Создание и кодирование данных сообщения.

trel = poly2trellis([4 3],[4 5 17;7 4 2]);
msg = ones(10000,1);

Создание объектов для сверточного кодера, декодера Витерби и калькулятора частоты ошибок.

hEnc = comm.ConvolutionalEncoder(trel);
hVitDec = comm.ViterbiDecoder(trel, 'InputFormat','hard', 'TracebackDepth',...
    2, 'TerminationMethod', 'Truncated');
hErrorCalc = comm.ErrorRate;

Закодируйте данные сообщения. Введите битовые ошибки. Отображение общего количества ошибок.

code = hEnc(msg);
[ncode,err] = bsc(code,.01);
numchanerrs = sum(sum(err))
numchanerrs = 158

Декодируйте данные и проверьте количество ошибок после декодирования.

dcode = hVitDec(ncode);
berVec = hErrorCalc(msg, dcode);
ber = berVec(1)
ber = 0.0049
numsyserrs = berVec(2)
numsyserrs = 49

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

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