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. Можно задать любую комбинацию входных аргументов из предыдущих синтаксисов.

Примеры

свернуть все

Создайте две двоичные матрицы.

x = [0 0; 0 0; 0 0; 0 0]
x = 4×2

     0     0
     0     0
     0     0
     0     0

y = [0 0; 0 0; 0 0; 1 1]
y = 4×2

     0     0
     0     0
     0     0
     1     1

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

numerrs = biterr(x,y)
numerrs = 2

Вычислите количество столбцовых ошибок.

numerrs = biterr(x,y,[],'column-wise')
numerrs = 1×2

     1     1

Вычислите количество строковых ошибок.

numerrs = biterr(x,y,[],'row-wise')
numerrs = 4×1

     0
     0
     0
     2

Вычислите количество общих ошибок. Поведение совпадает с поведением по умолчанию.

numerrs = biterr(x,y,[],'overall')
numerrs = 2

Демодулируйте сигнал зашумленного 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')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Estimated BER, Theoretical BER.

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

свернуть все

Входы, которые будут сравниваться, заданные как отдельные аргументы, как вектор или матрица неотрицательных целочисленных элементов. Функция преобразует каждый элемент x и y к его беззнаковому двоичному представлению для сравнения.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Максимальное количество бит для входных элементов x и y, заданный как положительное целое число. Если количество бит, необходимое для двоичного представления любого элемента в x или y больше k, ошибки функции.

Если вы не устанавливаете kфункция устанавливает его как количество бит в двоичном представлении самого большого элемента в x и y.

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

Флаг для переопределения настроек функции по умолчанию, заданный как 'overall', 'row-wise', или 'column-wise'. Флаг задает, как функция сравнивает элементы во входах x,y и вычисляет выход. Для получения дополнительной информации смотрите раздел Алгоритмы.

Типы данных: string | char

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

свернуть все

Количество битовых ошибок, возвращенных в виде неотрицательного целого или целого вектора.

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

Вероятность битовой ошибки, возвращенная как скаляр. ratio количество битовых ошибок, number, к общему количеству бит, используемых в двоичном представлении. Общее количество бит k умножить количество записей в меньшем из входов x,y.

Результат двоичного сравнения каждого входного элемента в 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 изменяется.

Размер yflag ЗначениеТип сравнения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Вектор-столбец, элементы которого представляют битовые ошибки в каждой строке xk умножить на размер y
Вектор-столбец 'overall'y в каждый столбец xОбщее количество битовых ошибокk умножить количество элементов x
'column-wise' (по умолчанию) y в каждый столбец xВектор-строка, элементы которого представляют битовые ошибки в каждом столбце xk умножить на размер y

См. также

| |

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