exponenta event banner

кусающееся животное

Количество битовых ошибок и частота битовых ошибок (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.

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

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

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

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. Например, см. вариант (c) на рисунке.

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

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

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