biterr

Количество битовых ошибок и частоты ошибок по битам (BER)

Описание

пример

[number,ratio] = biterr(x,y) сравнивает бинарное представление без знака элементов в x тем в y. Функция возвращает number, количество битов, которые отличаются по сравнению и ratio, отношение number к общему количеству битов. Функция определяет порядок, в котором она сравнивает x и y на основе их размеров. Для получения дополнительной информации смотрите раздел Algorithms.

[number,ratio] = biterr(x,y,k) также задает k, максимальное количество битов для каждого элемента в x и y. Если бинарное представление без знака любого элемента в x или y больше, чем k цифры, функциональные ошибки.

пример

[number,ratio] = biterr(x,y,k,flag) задает flag заменять настройки по умолчанию для того, как функция сравнивает элементы и вычисляет выходные параметры. Для получения дополнительной информации смотрите раздел Algorithms.

[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-ary символы.

  • QAM-модулируйте символы данных.

  • Передайте модулируемый сигнал через канал AWGN.

  • Демодулируйте полученный сигнал.

  • Преобразуйте демодулируемые символы в двоичные данные.

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

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 к его бинарному представлению без знака для сравнения.

Типы данных: 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 и вычисляет выход. Для получения дополнительной информации смотрите раздел Algorithms.

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

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

свернуть все

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

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

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

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

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

Алгоритмы

свернуть все

Сравнение входных параметров на основе размеров

Функция использует размеры x и y определить порядок, в котором это сравнивает их элементы.

  • Если входные параметры являются матрицами тех же размерностей, то функция сравнивает входные параметры поэлементно. number неотрицательное целое число в этом случае. Например, смотрите случай (a) в фигуре.

  • Если один вход является матрицей, и другой вход является вектор-столбцом, то функция сравнивает каждый столбец элемента матрицы элементом с вектор-столбцом. Количество строк в матрице должно быть равно длине вектор-столбца. Другими словами, если матрица имеет размерности m-by-n, то вектор-столбец должен иметь размерности m-by-1. Например, смотрите случай (b) в фигуре.

  • Если один вход является матрицей, и другой вход является вектором-строкой, то функция сравнивает каждую строку элемента матрицы элементом с вектором-строкой. Количество столбцов в матрице должно быть равно длине вектора-строки. Другими словами, если матрица имеет размерности m-by-n, то вектор-строка должен иметь размерности 1 n. Например, смотрите случай (c) в фигуре.

Сравнение входных параметров на основе флага

Эта таблица описывает, как выход вычисляется на основе различных значений flagX рассматривается как матрицу в этой таблице и размере y варьируется.

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