biterr
Количество битовых ошибок и вероятность битовой ошибки (BER)
Синтаксис
Описание
пример
[ сравнивает беззнаковое двоичное представление элементов в number,ratio] = biterr(x,y)x тем, кто в y. Функция возвращается number, количество бит, которые различаются при сравнении, и ratio, отношение number к общему количеству бит. Функция определяет порядок, в котором она сравнивается x и y исходя из их размеров. Для получения дополнительной информации см. Раздел Алгоритмы.
[ также задает number,ratio] = biterr(x,y,k)k, максимальное количество бит для каждого элемента в x и y. Если беззнаковое двоичное представление любого элемента в x или y более k цифры, ошибки функции.
пример
[ задает number,ratio] = biterr(x,y,k,flag)flag для переопределения настроек по умолчанию для сравнения элементов функцией и вычисления выходов. Для получения дополнительной информации см. Раздел Алгоритмы.
[ возвращает результат двоичного сравнения number,ratio,individual] = biterr(___)x и y как матрица individual. Можно задать любую комбинацию входных аргументов из предыдущих синтаксисов.
Примеры
свернуть все
Расчет частоты битовых ошибок
Создайте две двоичные матрицы.
Определите количество битовых ошибок.
Вычислите количество столбцовых ошибок.
numerrs = biterr(x,y,[],'column-wise')
Вычислите количество строковых ошибок.
numerrs = biterr(x,y,[],'row-wise')
Вычислите количество общих ошибок. Поведение совпадает с поведением по умолчанию.
numerrs = biterr(x,y,[],'overall')
Оценка частоты битовой ошибки для 64-QAM в AWGN
Демодулируйте сигнал зашумленного 64-QAM и оцените вероятность битовой ошибки (BER) для области значений Eb/No. Сравните оценку BER с теоретическими значениями.
Установите параметры симуляции.
M = 64; % Modulation order k = log2(M); % Bits per symbol EbNoVec = (5:15)'; % Eb/No values (dB) numSymPerFrame = 100; % Number of QAM symbols per frame
Инициализируйте вектор результатов.
berEst = zeros(size(EbNoVec));
Основной цикл обработки выполняет эти шаги.
-
Сгенерируйте двоичные данные и преобразуйте в 64-арные символы.
-
QAM-модулирует символы данных.
-
Пропустите модулированный сигнал через канал AWGN.
-
Демодулируйте принятый сигнал.
-
Преобразуйте демодулированные символы в двоичные данные.
-
Вычислим количество битовых ошибок.
The while цикл продолжает обрабатывать данные до тех пор, пока не встретятся или 200 ошибок или не будет передано 1e7 бит.
for n = 1:length(EbNoVec) % Convert Eb/No to SNR snrdB = EbNoVec(n) + 10*log10(k); % Reset the error and bit counters numErrs = 0; numBits = 0; while numErrs < 200 && numBits < 1e7 % Generate binary data and convert to symbols dataIn = randi([0 1],numSymPerFrame,k); dataSym = bi2de(dataIn); % QAM modulate using 'Gray' symbol mapping txSig = qammod(dataSym,M); % Pass through AWGN channel rxSig = awgn(txSig,snrdB,'measured'); % Demodulate the noisy signal rxSym = qamdemod(rxSig,M); % Convert received symbols to bits dataOut = de2bi(rxSym,k); % Calculate the number of bit errors nErrors = biterr(dataIn,dataOut); % Increment the error and bit counters numErrs = numErrs + nErrors; numBits = numBits + numSymPerFrame*k; end % Estimate the BER berEst(n) = numErrs/numBits; end
Определите теоретическую кривую BER при помощи berawgn функция.
berTheory = berawgn(EbNoVec,'qam',M);
Постройте график оценочных и теоретических данных BER. Оцененные точки данных BER хорошо выровнены с теоретической кривой.
semilogy(EbNoVec,berEst,'*') hold on semilogy(EbNoVec,berTheory) grid legend('Estimated BER','Theoretical BER') xlabel('Eb/No (dB)') ylabel('Bit Error Rate')

Входные параметры
свернуть все
x,y — Сравниваемые входные параметры (как отдельные аргументы)
вектор | матрица
Входы, которые будут сравниваться, заданные как отдельные аргументы, как вектор или матрица неотрицательных целочисленных элементов. Функция преобразует каждый элемент x и y к его беззнаковому двоичному представлению для сравнения.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
k — Максимальное количество бит для входных элементов
положительное целое число
Максимальное количество бит для входных элементов x и y, заданный как положительное целое число. Если количество бит, необходимое для двоичного представления любого элемента в x или y больше k, ошибки функции.
Если вы не устанавливаете kфункция устанавливает его как количество бит в двоичном представлении самого большого элемента в x и y.
Типы данных: single | double
flag — Флаг для переопределения настроек по умолчанию
'overall' | 'row-wise' | 'column-wise'
Флаг для переопределения настроек функции по умолчанию, заданный как 'overall', 'row-wise', или 'column-wise'. Флаг задает, как функция сравнивает элементы во входах x,y и вычисляет выход. Для получения дополнительной информации смотрите раздел Алгоритмы.
Типы данных: string | char
Выходные аргументы
свернуть все
number — Количество битовых ошибок
неотрицательное целое число | целое число вектор
Количество битовых ошибок, возвращенных в виде неотрицательного целого или целого вектора.
Типы данных: single | double
ratio — Вероятность битовой ошибки
скаляр
Вероятность битовой ошибки, возвращенная как скаляр. ratio количество битовых ошибок, number, к общему количеству бит, используемых в двоичном представлении. Общее количество бит k умножить количество записей в меньшем из входов x,y.
individual — Результат двоичного сравнения каждого входного элемента
матрица
Результат двоичного сравнения каждого входного элемента в x и y, возвращенный как матрица, размерности которой являются размерностями большей из x и y. Каждый элемент задает количество бит, на которое отличаются элементы в паре.
Типы данных: single | double
Алгоритмы
свернуть все
Сравнение входных параметров на основе размеров
Функция использует размеры x и y для определения порядка, в котором он сравнивает их элементы.
-
Если входы являются матрицами тех же размерностей, то функция сравнивает входы по элементам.
numberявляется неотрицательным целым числом в этом случае. Для примера см. случай (а) на рисунке. -
Если один вход является матрицей, а другой — вектор-столбец, то функция сравнивает каждый столбец матричного элемента по элементам с вектором-столбцом. Количество строк в матрице должно быть равно длине вектора-столбца. Другими словами, если матрица имеет размерности m -by — n, то вектор-столбец должна иметь размерности m -by-1. Например, см. случай (b) на рисунке.
-
Если один вход является матрицей, а другой — вектор-строка, то функция сравнивает каждую строку элемент матрицы по элементам с вектором-строкой. Количество столбцов в матрице должно быть равно длине вектора-строки. Другими словами, если матрица имеет размерности m -by — n, то вектор-строка должна иметь размерности 1-by — n. Например, см. случай (с) на рисунке.

Сравнение входных параметров на основе флага
Эта таблица описывает, как выход вычисляется на основе различных значений flag. x рассматривается как матрица в этой таблице и размер y изменяется.
Размер y |
flag Значение |
Тип сравнения | number Значение |
Общее количество бит |
|---|---|---|---|---|
| Матрица | 'overall' (по умолчанию) |
Элемент за элементом | Общее количество битовых ошибок | k умножить количество элементов в y |
'row-wise' |
m строка x m 1-ю строку y |
Вектор-столбец, элементы которого представляют битовые ошибки в каждой строке | k умножить количество элементов в y |
|
'column-wise' |
m-й столбец x m-й столбец y
|
Вектор-строка, элементы которого представляют битовые ошибки в каждом столбце | k умножить количество элементов в y |
|
| Вектор-строка | 'overall' |
y в каждую строку x |
Общее количество битовых ошибок | k умножить количество элементов x |
'row-wise'(по умолчанию) |
y в каждую строку x |
Вектор-столбец, элементы которого представляют битовые ошибки в каждой строке x |
k умножить на размер y |
|
| Вектор-столбец | 'overall' |
y в каждый столбец x |
Общее количество битовых ошибок | k умножить количество элементов x |
'column-wise' (по умолчанию) |
y в каждый столбец x |
Вектор-строка, элементы которого представляют битовые ошибки в каждом столбце x |
k умножить на размер y |
Представлено до R2006a
biterr
Количество битовых ошибок и вероятность битовой ошибки (BER)
Синтаксис
Описание
пример
[ сравнивает беззнаковое двоичное представление элементов в number,ratio] = biterr(x,y)x тем, кто в y. Функция возвращается number, количество бит, которые различаются при сравнении, и ratio, отношение number к общему количеству бит. Функция определяет порядок, в котором она сравнивается x и y исходя из их размеров. Для получения дополнительной информации см. Раздел Алгоритмы.
[ также задает number,ratio] = biterr(x,y,k)k, максимальное количество бит для каждого элемента в x и y. Если беззнаковое двоичное представление любого элемента в x или y более k цифры, ошибки функции.
пример
[ задает number,ratio] = biterr(x,y,k,flag)flag для переопределения настроек по умолчанию для сравнения элементов функцией и вычисления выходов. Для получения дополнительной информации см. Раздел Алгоритмы.
[ возвращает результат двоичного сравнения number,ratio,individual] = biterr(___)x и y как матрица individual. Можно задать любую комбинацию входных аргументов из предыдущих синтаксисов.
Примеры
свернуть все
Расчет частоты битовых ошибок
Создайте две двоичные матрицы.
Определите количество битовых ошибок.
Вычислите количество столбцовых ошибок.
numerrs = biterr(x,y,[],'column-wise')
Вычислите количество строковых ошибок.
numerrs = biterr(x,y,[],'row-wise')
Вычислите количество общих ошибок. Поведение совпадает с поведением по умолчанию.
numerrs = biterr(x,y,[],'overall')
Оценка частоты битовой ошибки для 64-QAM в AWGN
Демодулируйте сигнал зашумленного 64-QAM и оцените вероятность битовой ошибки (BER) для области значений Eb/No. Сравните оценку BER с теоретическими значениями.
Установите параметры симуляции.
M = 64; % Modulation order k = log2(M); % Bits per symbol EbNoVec = (5:15)'; % Eb/No values (dB) numSymPerFrame = 100; % Number of QAM symbols per frame
Инициализируйте вектор результатов.
berEst = zeros(size(EbNoVec));
Основной цикл обработки выполняет эти шаги.
-
Сгенерируйте двоичные данные и преобразуйте в 64-арные символы.
-
QAM-модулирует символы данных.
-
Пропустите модулированный сигнал через канал AWGN.
-
Демодулируйте принятый сигнал.
-
Преобразуйте демодулированные символы в двоичные данные.
-
Вычислим количество битовых ошибок.
The while цикл продолжает обрабатывать данные до тех пор, пока не встретятся или 200 ошибок или не будет передано 1e7 бит.
for n = 1:length(EbNoVec) % Convert Eb/No to SNR snrdB = EbNoVec(n) + 10*log10(k); % Reset the error and bit counters numErrs = 0; numBits = 0; while numErrs < 200 && numBits < 1e7 % Generate binary data and convert to symbols dataIn = randi([0 1],numSymPerFrame,k); dataSym = bi2de(dataIn); % QAM modulate using 'Gray' symbol mapping txSig = qammod(dataSym,M); % Pass through AWGN channel rxSig = awgn(txSig,snrdB,'measured'); % Demodulate the noisy signal rxSym = qamdemod(rxSig,M); % Convert received symbols to bits dataOut = de2bi(rxSym,k); % Calculate the number of bit errors nErrors = biterr(dataIn,dataOut); % Increment the error and bit counters numErrs = numErrs + nErrors; numBits = numBits + numSymPerFrame*k; end % Estimate the BER berEst(n) = numErrs/numBits; end
Определите теоретическую кривую BER при помощи berawgn функция.
berTheory = berawgn(EbNoVec,'qam',M);
Постройте график оценочных и теоретических данных BER. Оцененные точки данных BER хорошо выровнены с теоретической кривой.
semilogy(EbNoVec,berEst,'*') hold on semilogy(EbNoVec,berTheory) grid legend('Estimated BER','Theoretical BER') xlabel('Eb/No (dB)') ylabel('Bit Error Rate')

Входные параметры
свернуть все
x,y — Сравниваемые входные параметры (как отдельные аргументы)
вектор | матрица
Входы, которые будут сравниваться, заданные как отдельные аргументы, как вектор или матрица неотрицательных целочисленных элементов. Функция преобразует каждый элемент x и y к его беззнаковому двоичному представлению для сравнения.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
k — Максимальное количество бит для входных элементов
положительное целое число
Максимальное количество бит для входных элементов x и y, заданный как положительное целое число. Если количество бит, необходимое для двоичного представления любого элемента в x или y больше k, ошибки функции.
Если вы не устанавливаете kфункция устанавливает его как количество бит в двоичном представлении самого большого элемента в x и y.
Типы данных: single | double
flag — Флаг для переопределения настроек по умолчанию
'overall' | 'row-wise' | 'column-wise'
Флаг для переопределения настроек функции по умолчанию, заданный как 'overall', 'row-wise', или 'column-wise'. Флаг задает, как функция сравнивает элементы во входах x,y и вычисляет выход. Для получения дополнительной информации смотрите раздел Алгоритмы.
Типы данных: string | char
Выходные аргументы
свернуть все
number — Количество битовых ошибок
неотрицательное целое число | целое число вектор
Количество битовых ошибок, возвращенных в виде неотрицательного целого или целого вектора.
Типы данных: single | double
ratio — Вероятность битовой ошибки
скаляр
Вероятность битовой ошибки, возвращенная как скаляр. ratio количество битовых ошибок, number, к общему количеству бит, используемых в двоичном представлении. Общее количество бит k умножить количество записей в меньшем из входов x,y.
individual — Результат двоичного сравнения каждого входного элемента
матрица
Результат двоичного сравнения каждого входного элемента в x и y, возвращенный как матрица, размерности которой являются размерностями большей из x и y. Каждый элемент задает количество бит, на которое отличаются элементы в паре.
Типы данных: single | double
Алгоритмы
свернуть все
Сравнение входных параметров на основе размеров
Функция использует размеры x и y для определения порядка, в котором он сравнивает их элементы.
-
Если входы являются матрицами тех же размерностей, то функция сравнивает входы по элементам.
numberявляется неотрицательным целым числом в этом случае. Для примера см. случай (а) на рисунке. -
Если один вход является матрицей, а другой — вектор-столбец, то функция сравнивает каждый столбец матричного элемента по элементам с вектором-столбцом. Количество строк в матрице должно быть равно длине вектора-столбца. Другими словами, если матрица имеет размерности m -by — n, то вектор-столбец должна иметь размерности m -by-1. Например, см. случай (b) на рисунке.
-
Если один вход является матрицей, а другой — вектор-строка, то функция сравнивает каждую строку элемент матрицы по элементам с вектором-строкой. Количество столбцов в матрице должно быть равно длине вектора-строки. Другими словами, если матрица имеет размерности m -by — n, то вектор-строка должна иметь размерности 1-by — n. Например, см. случай (с) на рисунке.

Сравнение входных параметров на основе флага
Эта таблица описывает, как выход вычисляется на основе различных значений flag. x рассматривается как матрица в этой таблице и размер y изменяется.
Размер y |
flag Значение |
Тип сравнения | number Значение |
Общее количество бит |
|---|---|---|---|---|
| Матрица | 'overall' (по умолчанию) |
Элемент за элементом | Общее количество битовых ошибок | k умножить количество элементов в y |
'row-wise' |
m строка x m 1-ю строку y |
Вектор-столбец, элементы которого представляют битовые ошибки в каждой строке | k умножить количество элементов в y |
|
'column-wise' |
m-й столбец x m-й столбец y |
Вектор-строка, элементы которого представляют битовые ошибки в каждом столбце | k умножить количество элементов в y |
|
| Вектор-строка | 'overall' |
y в каждую строку x |
Общее количество битовых ошибок | k умножить количество элементов x |
'row-wise'(по умолчанию) |
y в каждую строку x |
Вектор-столбец, элементы которого представляют битовые ошибки в каждой строке x |
k умножить на размер y |
|
| Вектор-столбец | 'overall' |
y в каждый столбец x |
Общее количество битовых ошибок | k умножить количество элементов x |
'column-wise' (по умолчанию) |
y в каждый столбец x |
Вектор-строка, элементы которого представляют битовые ошибки в каждом столбце x |
k умножить на размер y |
Представлено до R2006a
выполнения этих задач в середине интервала каждого двоичного разряда производится выборка, после чего полученная величина сравнивается с пороговым значением. Как можно видеть на том же рисунке, помехи и другие искажения могут приводить к ошибочным результатам.
То, насколько успешной будет интерпретация сигнала, поступившего в приемник, главным образом зависит от трёх факторов: отношения сигнал/шум, скорости передачи данных и ширины полосы. При фиксированных остальных параметрах справедливы следующие утверждения:
–увеличение скорости передачи данных приводит к увеличению скорости появления ошибочных битов, или, что тоже самое, к увеличению
частоты битовых ошибок (ВЕR – bit error rate);
–увеличение отношения сигнал/шум уменьшает скорость появления ошибочных битов;
–увеличение ширины полосы позволяет увеличить скорость передачи данных.
Существует еще один фактор, позволяющий увеличить производительность – выбор схемы линейного кодирования. Схема кодирования представляет собой простое отображение информационных битов в сигнальные посылки. При выборе конкретной схемы в первую очередь обращают внимание на следующие параметры и показатели [5, 11, 13].
Спектр сигнала. Некоторые особенности спектра сигнала имеют важное значение. Отсутствие высокочастотных компонентов означает, что для передачи требуется более узкая полоса. Кроме того, желательно также, чтобы отсутствовала постоянная составляющая. Если в сигнале она присутствует, то должно существовать прямое физическое соединение передающего и приемного устройства (если речь идет о проводных системах связи). Если же постоянная составляющая отсутствует, то можно использовать соединение по переменному току через трансформатор; это дает превосходную электрическую изоляцию и снижает интерференцию. И, наконец, уровни искажения сигнала и интерференции зависят от спектральных свойств передаваемого сигнала. На практике наибольшие искажения сигнал претерпевает на краях полосы пропускания. Следовательно, при хорошей структуре сигнала основная передаваемая мощность должна быть сосредоточена в середине полосы передачи. Тогда принимаемый сигнал будет менее искаженным. Этого можно добиться с помощью методов модуляции, позволяющих формировать спектр передаваемого сигнала.
11
Синхронизация. Приемник должен уметь определять начало и конец каждого двоичного разряда. Это совсем не легко. Один из довольно дорогостоящих подходов состоит в выделении специального канала для синхронизации приемника и передатчика. Альтернативный вариант – создание некоторого механизма синхронизации на базе переданного сигнала.
Интерференция сигналов и помехоустойчивость. Отдельные кодировки позволяют добиваться лучшей производительности при наличии помех, чем другие. Выражается это, как правило, через скорость появления ошибок.
Стоимость и сложность. Хотя цифровые логические схемы продолжают падать в цене, этот фактор игнорировать не стоит. В частности, чем выше скорость передачи сигналов, позволяющая получить определенную скорость передачи данных, тем выше цена.
1.2Методы цифровой полосовой модуляции
Полосовая модуляция [4] (аналоговая или цифровая) – это процесс преобразования информационного сигнала в синусоидальный сигнал; при цифровой модуляции синусоида на интервале Т называется цифровым символом. Синусоиды могут отличаться по амплитуде, частоте и фазе. Таким образом, полосовую модуляцию можно определить как процесс варьирования амплитуды, частоты или фазы (или их комбинаций) радиочастотной несущей согласно передаваемой информации. В общем виде несущая записывается следующим образом
Здесь А(t) – переменная во времени амплитуда, а θ(t) – переменный во времени угол.
Угол удобно записывать в виде
так что
|
s(t) A(t) cos[ 0t |
(t)] |
(1.3) |
где ω, – угловая частота несущей, φ(t) – ее фаза.
Частота может записываться как переменная f или как переменная ω. В первом случае частота измеряется в герцах (Гц), во втором – в радианах в секунду (рад/с). Эти параметры связаны следующим соотношением ω = 2πf.
12
Таблица 1.1 – Основные типы полосовой модуляции/демодуляции
|
Когерентные схемы |
Некогерентные схемы |
||
|
Фазовая манипуляция (PSK) |
Дифференциальныя |
фазовая |
|
|
Частотная манипуляция (FSK) |
манипуляция (DPSK) |
||
|
Амплитудная |
манипуляция |
Частотная манипуляция (FSK) |
|
|
(ASK) |
Амплитудная манипуляция (ASK) |
||
|
Модуляция без |
разрыва фазы |
Модуляция без разрыва фазы |
|
|
(CPM) |
(СРМ) |
||
|
Смешанные комбинации |
Смешанные комбинации |
Если для детектирования сигналов приемник использует информацию о фазе несущей, процесс называется когерентным детектированием (coherent detection); если подобная информация не используется, процесс именуется некогерентным детектированием (noncoherent detection). При идеальном когерентном детектировании приемник содержит прототипы каждого возможного сигнала. Эти сигналы-прототипы дублируют алфавит переданных сигналов по всем параметрам, даже по радиочастотной фазе. В этом случае говорят, что приемник автоматически подстраивается под фазу входного сигнала. В процессе демодуляции приемник перемножает и интегрирует входной сигнал с каждым прототипом (определяет корреляцию). В таблице 1.1 под общим заголовком когерентной модуляции/демодуляции перечислены: фазовая манипуляция, частотная манипуляция (frequency shift keying – FSK), амплитудная манипуляция (amplitude shift keying – ASK), модуляция без разрыва фазы (continuous phase modulation – CPM) и
смешанные комбинации этих модуляций. Некоторые специализированные форматы, такие как квадратурная фазовая манипуляция со сдвигом (offset quadrature PSK – OQPSK), манипуляция с минимальным сдвигом (minimum shift keying – MSK), принадлежащие к классу модуляций СРМ, и квадратурная амплитудная модуляция (quadrature amplitude modulation – QAM) в таблице не отображены.
Некогерентная демодуляция относится к системам, использующим демодуляторы, спроектированные для работы без знания абсолютной величины фазы входного сигнала; следовательно, определение фазы в этом случае не требуется. Таким образом, преимуществом некогерентных систем перед когерентными является простота, а недостатком – большая вероятность ошибки. В таблице 1.1 под заголовком некогерентной передачи сигналов перечислены модуляции, подобные используемым при когерентной передаче: DPSK, FSK, ASK, CPM и смешанные их комбинации. Подразумевается, что для некогерентного приема информация о фазе не используется; но, тем не менее, под заголовком «некогерентная передача» указана одна из форм фазовой манипуляции. Это вызвано тем, что одну из важных форм PSK можно отнести к некогерентной (или дифференциально
13
когерентной), поскольку она не требует согласования по фазе с принятой несущей. При использовании этой модуляции, называемой дифференциальной фазовой манипуляцией (differential PSK – DPSK), в процессе детектирования текущего символа в качестве опорной фазы применяется фаза предыдущего символа [2, 13].
1.3Оценка качества приема в цифровых системах связи
Любой, кто изучал аналоговую связь, знаком с критерием качества, именуемым отношением средней мощности сигнала к средней мощности шума (S/N или SNR). В цифровой связи для оценки качества чаще используется нормированная версия SNR – отношение Еb/N0. Еb – это энергия бита, и ее можно описать как мощность сигнала S, умноженную на время передачи бита Тb. N0 – это спектральная плотность мощности шума, и ее можно выразить как мощность шума N, деленную на ширину полосы W. Поскольку время передачи бита и скорость передачи битов Rb взаимно обратны, Тb можно заменить на 1/Rb.
|
Eb |
S Tb |
S / Rb |
(1.4) |
||
|
N0 |
N /W |
N /W |
|||
Еще одним параметром, часто используемым в цифровой связи, является скорость передачи данных в битах в секунду. В целях упрощения выражений, встречающихся в данной работе, для представления скорости передачи битов вместо записи Rb используется знак R. С учетом сказанного перепишем, выражение (1.4) так, чтобы было явно видно, что отношение Еb/N0 представляет собой отношение S/N, нормированное на ширину полосы и скорость передачи битов.
|
Eb |
S |
W |
(1.5) |
|
|
N0 |
N |
R |
||
Одной из важнейших метрик производительности в системах цифровой связи является график зависимости вероятности появления ошибочного бита Pb от Еb/N0. На рисунке 1.2 показан общий вид большинства подобных кривых. При Eb/N0 ≥ x0, Pb ≤ P0. Безразмерное отношение Eb/N0 – это стандартная качественная мера производительности систем цифровой связи.
14
Следовательно, необходимое отношение Eb/N0 можно рассматривать как метрику, позволяющую сравнивать производительность различных систем; чем меньше требуемое отношение Eb/N0, тем эффективнее процесс регистрации при данной вероятности ошибки.
Pb
для Eb/N0≥x0, PB≤P0
|
P0 |
Eb |
= S |
W |
|
N0 |
N |
R |
x0 Eb/N0
Рисунок 1.2 – Общий вид зависимости Pb ОТ Eb/N0
1.4Фазовая манипуляция PSK
Фазовая манипуляция (phase shift keying – PSK) была разработана в начале развития программы исследования дальнего космоса; сейчас схема PSK широко используется в коммерческих и военных системах связи. Сигнал в модуляции PSK имеет следующий вид.
|
si (t) |
2E |
cos[ |
0t |
i (t)] |
0 ≤ t ≤ T; i = 1,….,M, |
(1.8) |
|||
|
T |
|||||||||
где: Е – энергия символа;
Т – время передачи символа, 0 ≤ t ≤ Т; ω0 – угловая частота;
φi(t) – фазовый член, который может принимать М дискретных значений, обычно определяемых следующим образом
|
(t) |
2 |
i |
i = 1,….,M |
(1.9) |
|
|
i |
|||||
|
M |
|||||
Типичный вид сигнала в модуляции BPSK (binary PSK – BPSK) приведен на рисунке 1.3, где явно видны характерные резкие изменения фазы при переходе между символами; если модулирующий поток данных состоит
15
из чередующихся нулей и единиц, то такие изменения будут происходить при каждом переходе. Работа схемы модуляции заключается в смещении фазы модулируемого сигнала si(t) на одно из двух значений, нуль или π
(180°).
Рисунок 1.3 – Типичный вид сигнала BPSK
Модулированный сигнал можно представить как вектор на графике в полярной системе координат, где длина вектора соответствует амплитуде сигнала, а его ориентация в общем М-арном случае – фазе сигнала относительно других М-1 сигналов набора. При модуляции BPSK векторное представление дает два противофазных (180º) вектора. Наборы сигналов, которые могут быть представлены подобными противофазными векторами,
называется антиподными [3].
1.5Вероятность ошибки при когерентном обнаружении сигнала
BPSK
Двоичное детектирование
Допустим, что передаваемый сигнал искажается только вследствие воздействия шума (additive white Gaussian noice – AWGN). Принятый сигнал в этом случае описывается как сумма переданного сигнала si(t) и случайного шумового процесса n(t):
|
r(t) si (t) n(t) 0 t T , i 1,…, M |
(1.10) |
16
В приемнике используется коррелятор принятого сигнала r(t) с сигналами прототипами si (t) . Глагол «коррелировать» означает «совпадать»,
«согласовываться», следовательно, коррелятор упрощенно можно определить как устройство, которое пытается найти соответствие принятого сигнала r(t) с каждым возможным сигналом-прототипом si(t), известным приемнику априори. Разумное правило принятия решения звучит так:
выбирать сигнал si(t), лучше всего согласующийся (или имеющий наибольшую корреляцию) с r(t). Другими словами, правило принятия решения выглядит следующим образом рис. 1.4
|
выбрать сигнал si(i), индекс которого |
(1.11) |
|
соответствует максимальной zi(T) |
В случае двоичного детектирования корреляционный приемник, как показано на рисунке 1.4, можно построить как согласованный фильтр или интегратор произведений с опорным сигналом, равным разности двоичных сигналов-прототипов s1(t)-s2(t). Выход коррелятора z(T) используется непосредственно в процессе принятия решения.
Опорный
сигнал
T
r(t)
0
Опорные
сигналы
T
0
T
0
Схема принятия решений
|
z(T)=ai(T)+n0(T) |
H1 |
|||
|
z(T) |
s€ |
(t) |
||
|
H2 |
i |
|||
a)
|
z1(T) |
Схема приня- |
||||
|
тия решений |
|||||
|
+ |
|||||
|
z(T)=ai(T)+n0(T) |
H1 |
€ |
|||
|
z(T) |
si |
(t) |
|||
|
H2 |
|||||
|
– |
|||||
|
z2(T) |
б)
Рисунок 1.4 – Двоичный корреляционный приемник: а) использование одного коррелятора; б) применение двух корреляторов
17
Корреляционный приемник при двоичном детектировании также можно изобразить как два согласованных фильтра или интегратора произведений, один из которых согласовывается с s1(t), а второй – с s2(t) (рисунок 1.4, б). На этапе принятия решения теперь может использоваться правило, приведенное в формуле (1.11), или же из выхода одного коррелятора можно вычесть выход другого и на этапе принятия решения использовать разность
|
z(T ) z1 (T ) z2 (T ) |
(1.12), |
как показано на рис. 1.4 б.
Здесь z(T), называемое тестовой статистикой, подается в схему принятия решения, как и в случае только одного коррелятора. В отсутствие шума на выходе мы получаем z(T) = ai(Т), где аi(Т) – сигнальный компонент. Входной шум п(Т) и выходной шум n0(Т) при этом являются случайными гауссовыми процессами. Таким образом, можно записать выражение сигнала на выходе коррелятора в момент взятия выборки t = Т
|
z(T ) ai (T ) n0 (T ), |
i=1,2,… |
(1.13) |
где n0(Т) – компонент шума, это гауссова случайная переменная с
нулевым средним;
z(T) – это гауссова случайная переменная со средним а1 или а2, в зависимости от того, была передана двоичная единица или двоичный нуль.
Порог двоичного решения
Критерий минимума ошибки для равновероятных двоичных сигналов, искаженных гауссовым шумом, можно сформулировать следующим образом:
здесь a1 — сигнальный компонент z(Т) при передаче s1(t), а а2 — сигнальный компонент z(T) при передаче s2(t).
Порог γ0, равный (а1+ а2)/2, — это оптимальный порог для минимизации вероятности принятия неверного решения при равновероятных сигналах и симметричных функциях правдоподобия. Правило принятия решения, приведенное в формуле (1.14), указывает, что гипотеза H1 (решение, что переданный сигнал – это s1(t)) выбирается при z(T) > γ0, а гипотеза Н2 (решение, что переданный сигнал – это s2(t)) – при z(Т) < γ0. Если z(T) = γ, решение может быть любым. При равновероятных антиподных
18
сигналах с равными энергиями, где s1(t) = -s2(t) и a1 = — a2, оптимальное правило принятия решения принимает следующий вид
что можно сформулировать следующим образом
выбрать сигнал s1(t), если z1(T) > z2(T) выбрать сигнал s2(t) в противном случае
Вероятность битовой ошибки
Вероятность принятия детектором неверного решения называется
вероятностью символьной ошибки, РS. Несмотря на то, что решения принимаются на символьном уровне, производительность системы часто удобнее задавать через вероятность битовой ошибки Рв.
Формула (1.16) описывает вероятность битовой ошибки PB для детектора, работающего по принципу минимальной вероятности ошибки
|
1 |
u2 |
a |
a |
||||||||
|
PB |
exp |
du Q |
1 |
2 |
(1.16) |
||||||
|
2 |
2 |
||||||||||
|
2 |
0 |
||||||||||
|
(a1 a2 ) / 2 |
|||||||||||
|
0 |
Здесь 0 – среднеквадратическое отклонение шума вне коррелятора.
Функция Q(x), называемая гауссовым интегралом ошибок, определяется следующим образом
|
1 |
u2 |
|||||||
|
Q( X ) |
exp |
du |
(1.17) |
|||||
|
2 |
||||||||
|
2 |
x |
|||||||
Для передачи антиподных сигналов с равными энергиями, таких как сигналы в формате BPSK, на выход приемника поступают следующие компоненты: а1 = 
Eb , при переданном сигнале s1(t), и а2 =– 
Eb , при
переданном сигнале s2(t), где Eb — энергия сигнала, приходящаяся на
двоичный символ. Для процесса AWGN дисперсию шума σ02 вне коррелятора можно заменить на N0/2, так что формулу (1.16) можно переписать следующим образом
19
|
1 |
u2 |
2E |
||||||||
|
PB |
exp |
du Q |
b |
(1.18) |
||||||
|
2 |
N0 |
|||||||||
|
1 |
||||||||||
|
2Eb / N0 |
1.6Дифференциальная фазовая манипуляция DPSK
Альтернативной формой двухуровневой PSK является дифференциальная PSK (differential phase-shift keying – DPSK), пример которой приведен на рисунке 1.5. В данной системе двоичный ноль представляется сигнальным пакетом, фаза которого совпадает с фазой предыдущего посланного пакета, а двоичная единица представляется сигнальным пакетом с фазой, противоположной фазе предыдущего пакета. Такая схема называется дифференциальной, поскольку сдвиг фаз выполняется относительно предыдущего переданного бита, а не относительно какого-то эталонного сигнала.
2
1.5
1
0.54
3
2
1
|
0 |
0.01 |
0.02 |
0.03 |
0.04 |
0.05 |
0.06 |
0.07 |
0.08 |
Рисунок 1.5 – Пример модуляции BDPSK
Само название – дифференциальная фазовая манипуляция – требует некоторого пояснения, поскольку со словом «дифференциальный» связано два различных аспекта процесса модуляции/демодуляции: процедура
20
В данной статье рассматривается построение упрощенной модели
системы связи с бинарной частотной манипуляцией. Среда Matlabимеет множество готовых блоков модуляторов и демодуляторов (в том
числе и FSK), используя которые можно быстро
провести оценку тех или иных параметров сигнала. Данные блоки позволяют
моделировать комплексную огибающую сигнала и, соответственно, работают с
комплексными числами.
Помимо этого Matlabпозволяет
проводить моделирование реального сигнала на несущей частоте. Однако при этом
нет возможности использовать готовые блоки. Соответственно модель при этом
значительно усложняется и скорость (а также верность) ее работы сильно
снижается. В данной и следующей статье будут рассматриваться оба варианта, как
моделирование комплексной огибающей, так и моделирование реального сигнала в
окрестности нулевой частоты.
Моделирование
комплексной огибающей.
На рисунке 1 приведена модель системы связи с бинарной частотной
манипуляцией.

Рисунок 2
моделирование комплексной огибающей
Здесь источник информации формирует битовый поток со
скоростью 4 Мбит/с (рис. 3). В зависимости от передаваемого символа, на выходе
модулятора действует сигнал с частотой f1 или f0.
В соответствии с расчетами разнос между тонами составляет
а весь сигнал занимает полосу частот F=8 МГц

Рисунок 3
битовый поток
Следует отметить, что данные цифры
справедливы для некогерентной обработки сигнала. Если предположить, что на
приемной
стороне фаза сигнала строго известна (т.е. имеет место когерентная
обработка), то в соответствии с теорией [1] расстояние между передаваемыми
тонами будет равно
Спектр сигнала на выходе модулятора представлен на рисунке 4.
Здесь отчетливо видны два частотных тона с разносом

Проходя через канал связи, к сигналу добавляется
шум. В соответствии с расчетами для обеспечения вероятности ошибки на бит 10-7 необходимо обеспечить 
Спектр сигнала в канале связи представлен на рис 5

Рисунок 5 Спектр
сигнала в КС
На приемной стороне происходит демодуляция сигнала и
восстановление исходного битового потока. Как видно из рисунка 2 полученная
вероятность битовой ошибки соответствует теоретической (10-7). При
понижении же отношения
до 12.27 дБ
вероятность ошибки значительно возрастает (рис. 6).

Рисунок 6 Вероятность
ошибки при 12,27 дБ в КС
Как будет показано в следующей статье, введение
канального кодирования позволяет повысить помехоустойчивость и сохранить
заданную
Моделирование
реального сигнала.
Модель, имитирующая реальный FSKсигнал в
окрестности нулевой частоты, приведена на рисунке 7.

Рисунок 7 модель
системы связиFSK
Схема модулятора приведена на рисунке 8 и содержит
два канала «1» и «0». Исходный битовый поток отображается на +1 и -1 и в
зависимости от передаваемого символа перемножается с гармоническим сигналом
частоты f1 или f0 (рис. 10).

Рисунок 8 модулятор FSK
После этого сигнал проходит через канал связи, где к
нему добавляется гауссовский шум. Односторонний спектр FSKсигнала с
разнесенными на 4 МГц тонами приведен на рис. 9.

Рисунок 9 спектр
сигнала в КС

Рисунок 10
Формирование сигнала FSK
Демодулятор может быть выполнен в двух вариантах: на
корреляторах и на согласованных фильтрах. Схема, основанная на применении
согласованных фильтров проще в реализации поэтому (при моделировании в Matlab) будем использовать ее
(рис. 11).

Рисунок 11
Демодулятор FSK
Сигнал с канала связи проходит через согласованные
фильтры, и в зависимости от передаваемого символа на выходе одного из СФ
образуется выброс АКФ, максимум которого соответствует моменту окончания
передачи символа (т.е. при t=n*Ts(рис. 12)).

Рисунок 12
автокорреляционные функции на выходе согласованных фильтров (ОСШ=100 дБ)
В моменты времени t=n*Ts происходит сравнение
значений АКФ. В зависимости от того в каком из каналов приема энергии больше,
выносится решение о принятом символе.
Стоит отметить, что при некогерентной обработке
каналов приема должно быть в два раза больше. Т. е. в каждом канале должно быть
два СФ: один согласованный с sin(fi) (синфазная
составляющая), а другой – с cos(fi) (квадратурная
составляющая). Сравнение же и вынос решения о принятом символе при этом
производится на основании суммы синфазной и квадратурной составляющих каждого
канала [1 стр. 225]. Однако в нашей модели приведена идеализированная ситуация,
когда фазы сигналов на передающей стороне строго соответствуют фазам ИХ СФ на
приемной стороне. В связи с этим отпадает необходимость установки
дополнительных согласованных фильтров.
Недостатком модели в данном случае является ее
медленная работа, и для того чтобы точно оценить вероятность ошибки необходимо
потратить много времени. Однако судя по рис. 7 можно предположить, что Pbблизка к теоретической. При понижении Eb/N0 до 12 дБ как и в первом случае Pb значительно возрастает.
Список используемой литературы: Б.Скляр «Цифровая связь»
Выполнил ст. гр. 8110 Махотин А. А.
biterr
Number of bit errors and bit error rate (BER)
Syntax
Description
example
[number,ratio] = biterr(x,y)
compares the unsigned binary representation of elements in x to those
in y. The function returns number, the number of
bits that differ in the comparison, and ratio, the ratio of
number to the total number of bits. The function determines the order
in which it compares x and y based on their sizes.
For more information, see the Algorithms section.
[number,ratio] = biterr(x,y,k)
also specifies k, the maximum number of bits for each element in
x and y. If the unsigned binary representation
of any element in x or y is more than
k digits, the function errors.
example
[number,ratio] = biterr(x,y,k,flag)
specifies a flag to override default settings for how the function
compares the elements and computes the outputs. For more information, see the Algorithms section.
[number,ratio,individual] = biterr(___)
returns the binary comparison result of x and y as
matrix individual. You can specify any of the input argument
combination from the previous syntaxes.
Examples
collapse all
Bit Error Rate Computation
Create two binary matrices.
Determine the number of bit errors.
Compute the number of column-wise errors.
numerrs = biterr(x,y,[],'column-wise')
Compute the number of row-wise errors.
numerrs = biterr(x,y,[],'row-wise')
Compute the number of overall errors. Behavior is the same as the default behavior.
numerrs = biterr(x,y,[],'overall')
Estimate Bit Error Rate for 64-QAM in AWGN
Demodulate a noisy 64-QAM signal and estimate the bit error rate (BER) for a range of Eb/No values. Compare the BER estimate to theoretical values.
Set the simulation parameters.
M = 64; % Modulation order k = log2(M); % Bits per symbol EbNoVec = (5:15); % Eb/No values (dB) numSymPerFrame = 100; % Number of QAM symbols per frame
Convert the EbN0 values to SNR.
snrdB =convertSNR(EbNoVec,"ebno","snr",BitsPerSymbol=k);
Initialize the results vector.
berEst = zeros(size(EbNoVec));
The main processing loop executes these steps.
-
Generate binary data and convert to 64-ary symbols.
-
QAM-modulate the data symbols.
-
Pass the modulated signal through an AWGN channel.
-
Demodulate the received signal.
-
Convert the demodulated symbols into binary data.
-
Calculate the number of bit errors.
The while loop continues to process data until either 200 errors are encountered or 1e7 bits are transmitted.
for n = 1:length(snrdB) % Reset the error and bit counters numErrs = 0; numBits = 0; while numErrs < 200 && numBits < 1e7 % Generate binary data and convert to symbols dataIn = randi([0 1],numSymPerFrame*k,1); dataSym = bit2int(dataIn,k); % QAM modulate using 'Gray' symbol mapping txSig = qammod(dataSym,M); % Pass through AWGN channel rxSig = awgn(txSig,snrdB(n),'measured'); % Demodulate the noisy signal rxSym = qamdemod(rxSig,M); % Convert received symbols to bits dataOut = int2bit(rxSym,k); % Calculate the number of bit errors nErrors = biterr(dataIn,dataOut); % Increment the error and bit counters numErrs = numErrs + nErrors; numBits = numBits + numSymPerFrame*k; end % Estimate the BER berEst(n) = numErrs/numBits; end
Determine the theoretical BER curve by using the berawgn function.
berTheory = berawgn(EbNoVec,'qam',M);
Plot the estimated and theoretical BER data. The estimated BER data points are well aligned with the theoretical curve.
semilogy(EbNoVec,berEst,'*') hold on semilogy(EbNoVec,berTheory) grid legend('Estimated BER','Theoretical BER') xlabel('Eb/No (dB)') ylabel('Bit Error Rate')

Input Arguments
collapse all
x,y — Inputs to be compared (as separate arguments)
vector | matrix
Inputs to be compared, specified as separate arguments, as a vector or matrix of
nonnegative integer elements. The function converts each element of
x and y to its unsigned binary
representation for comparison.
Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
k — Maximum number of bits for input elements
positive integer
Maximum number of bits for input elements of x and
y, specified as a positive integer. If the number of bits
required for binary representation of any element in x or
y is greater than k, the function
errors.
If you do not set k, the function sets it as the number of bits
in the binary representation of the largest element in x and
y.
Data Types: single | double
flag — Flag to override default settings
'overall' | 'row-wise' | 'column-wise'
Flag to override default settings of the function, specified as
'overall', 'row-wise', or
'column-wise'. Flag specifies how the function compares elements in
inputs x,y and computes the output. For more information, see the
Algorithms
section.
Data Types: string | char
Output Arguments
collapse all
number — Number of bit errors
nonnegative integer | integer vector
Number of bit errors, returned as a nonnegative integer or integer vector.
Data Types: single | double
ratio — Bit error rate
scalar
Bit error rate, returned as a scalar. ratio is the number of
bit errors, number, to the total number of bits used in the binary
representation. The total number of bits is k times the number of
entries in the smaller of the inputs x,y.
individual — Results of each individual binary comparison
matrix
Results of each individual binary comparison, returned as a matrix whose dimensions
are those of the larger of inputs x and y.
Each element specifies the number of bits by which the elements in the pair differ. For
more information, see the Algorithms
section.
Data Types: single | double
Algorithms
collapse all
Comparing Inputs Based on Sizes
The function uses the sizes of x and y to
determine the order in which it compares their elements.
-
If inputs are matrices of the same dimensions, then the function compares the
inputs element by element.numberis a nonnegative integer in
this case. For example, see case (a) in the figure. -
If one input is a matrix and the other input is a column vector, then the function
compares each column of the matrix element by element with the column vector. The
number of rows in the matrix must be equal to the length of the column vector. In
other words, if the matrix has dimensions
m-by-n, then the column vector must have
dimensions m-by-1. For example, see case (b) in the figure. -
If one input is a matrix and the other input is a row vector, then the function
compares each row of the matrix element by element with the row vector. The number of
columns in the matrix must be equal to the length of the row vector. In other words,
if the matrix has dimensions m-by-n, then the
row vector must have dimensions 1-by-n. For example, see case (c)
in the figure.

Comparing Inputs Based on Flag
This table describes how the output is computed based on the different values of
flag. x is considered as a matrix in this table
and the size of y is varied.
Size of y |
flag Value |
Type of Comparison | number Value |
Total Number of Bits |
|---|---|---|---|---|
| Matrix | 'overall' (default) |
Element by element | Total number of bit errors | k times the number of elements iny |
'row-wise' |
mth row of x tomth row of y |
Column vector whose elements represent the bit errors in each row | k times the number of elements iny |
|
'column-wise' |
mth column of x tomth column of y
|
Row vector whose elements represent the bit errors in each column | k times the number of elements iny |
|
| Row vector | 'overall' |
y to each row of x |
Total number of bit errors | k times the number of elements ofx |
'row-wise'(default) |
y to each row of x |
Column vector whose elements represent the bit errors in each row ofx |
k times the size of y |
|
| Column vector | 'overall' |
y to each column of x |
Total number of bit errors | k times the number of elements ofx |
'column-wise' (default) |
y to each column of x |
Row vector whose elements represent bit errors in each column ofx |
k times the size of y |
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Version History
Introduced before R2006a
Main Content
berconfint
Error probability estimate and confidence interval of Monte Carlo
simulation
Syntax
Description
[errprobest,interval] = berconfint(nerrs,ntrials)
returns the error probability estimate and 95% confidence interval for a Monte Carlo
simulation of ntrials trials with nerrs
errors.
example
[errprobest,interval] = berconfint(nerrs,ntrials,level)
specifies the confidence level.
Examples
collapse all
Compute BER Confidence Interval for Simulation Results
Compute the confidence interval for the simulation of a communication system that has 100 bit errors in 106 trials. The bit error rate (BER) for that simulation is 10-4.
Compute the 90% confidence interval for the BER of the system. The output shows that, with 90% confidence level, the BER for the system is between 0.0000841 and 0.0001181.
nerrs = 100; % Number of bit errors in simulation ntrials = 10^6; % Number of trials in simulation level = 0.90; % Confidence level [ber,interval] = berconfint(nerrs,ntrials,level)
interval = 1×2
10-3 ×
0.0841 0.1181
For an example that uses the output of the berconfint function to plot error bars on a BER plot, see Use Curve Fitting on Error Rate Plot.
Input Arguments
collapse all
nerrs — Number of errors
scalar
Number of errors from Monte Carlo simulation results, specified as a scalar.
Data Types: single | double
ntrials — Number of trials
scalar
Number of trials from Monte Carlo simulation results, specified as a scalar.
Data Types: single | double
level — Confidence level
scalar in the range [0, 1]
Confidence level for a Monte Carlo simulation, specified as a scalar in the range
[0, 1].
Data Types: single | double
Output Arguments
collapse all
errprobest — Error probability estimate
scalar
Error probability estimate for a Monte Carlo simulation, returned as a scalar.
-
If the errors and trials are measured in bits, the error probability is the
bit error rate (BER). -
If the errors and trials are measured in symbols, the error probability is the
symbol error rate (SER).
interval — Confidence interval
two-element column vector
Confidence interval for a Monte Carlo simulation, returned as a two-element column
vector that lists the endpoints of the confidence interval for the confidence level
specified by the input level.
References
[1] Jeruchim, Michel C., Philip Balaban, and K. Sam Shanmugan.
Simulation of Communication Systems. Second Edition. New York: Kluwer
Academic/Plenum, 2000.
Version History
Introduced before R2006a
|
KrakenPro 0 / 0 / 0 Регистрация: 18.03.2016 Сообщений: 108 |
||||
|
1 |
||||
|
27.04.2020, 10:43. Показов 1078. Ответов 1 Метки нет (Все метки)
Здравствуйте, написан код BPSK модуляции с дифференциальном кодированием, проблема заключается в том что при повышении SNR вероятность битовой ошибки остается высокой. В чем может быть проблема?
0 |
|
АлександрКом 1266 / 902 / 440 Регистрация: 21.10.2012 Сообщений: 2,568 |
||||
|
27.04.2020, 11:31 |
2 |
|||
|
KrakenPro, по-моему, есть косяк тут:
На первом шаге вы заполняете MOD_DATA(1:20), на втором MOD_DATA(5:40). Так и должно быть?
0 |
