MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем
 

Обработка сигналов и изображений\Communications Toolbox

Список функций CommunicationsToolbox: Функции анализа сигналов

  В оглавление \ К следующему разделу \ К предыдущему разделу

BITERR
Вычисление числа ошибочных бит и вероятности ошибки на бит

Синтаксис:

[number,ratio] = biterr(x,y);
[number,ratio] = biterr(x,y,k);
[number,ratio] = biterr(...,flag);
[number,ratio,individual] = biterr(...)

Описание:

Для всех вариантов синтаксиса

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

Все элементы x и y должны быть неотрицательными целыми числами; функция biterr конвертирует каждый элемент в его беззнаковое двоичное представление. Выходной параметр number представляет собой скаляр или вектор, содержащий число различающихся бит. Выходной параметр ratio — это вероятность ошибки на бит, то есть значение number, деленное на общее число сравниваемых бит. Общее число сравниваемых бит, размер вектора number и правила сравнения определяются размерностями массивов x и y, а также дополнительными параметрами.

Для конкретных вариантов синтаксиса

[number,ratio] = biterr(x,y)

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

  • если x и y — матрицы одинакового размера, функция biterr сравнивает их поэлементно (см. схему а, приведенную выше);
  • если один из входных параметров является вектором-строкой (столбцом), а другой — матрицей, функция biterr поэлементно сравнивает вектор с каждой строкой (каждым столбцом) матрицы. Длина вектора должна быть равна числу столбцов (строк) матрицы. Выходной параметр number будет вектором-столбцом (строкой), m-й элемент которого показывает число различающихся бит, полученное при сравнении вектора с m-й строкой (столбцом) матрицы (см. схемы б и в, приведенные выше).

[number,ratio] = biterr(x,y,k)

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

[number,ratio] = biterr(x,y,k,flag)

То же, что и предыдущие варианты синтаксиса, но правила сравнения элементов и вычисления результатов определяются не по умолчанию, а задаются строковым параметром flag. Возможными значениями параметра flag являются строки 'row-wise', 'column-wise' и 'overall'. Приведенная ниже таблица показывает, как производится сравнение и как вычисляются результаты при различных комбинациях входных параметров. Как всегда, выходной параметр ratio вычисляется путем деления number на общее число сравниваемых бит. Если параметр k не задан, он определяется автоматически как число бит, минимально необходимое для представления самого большого из чисел, содержащихся в x и y.

Таблица: Сравнение двумерной матрицы x со вторым входным параметром y

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

[number,ratio,individual] = biterr(...)

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

Примеры.

Пример 1.

Команда, приведенная ниже, выполняет сравнение вектора-столбца [0; 0; 0] с каждым столбцом случайной двоичной матрицы. Рассчитываются число единичных элементов в каждом столбце случайной матрицы, их доля и расположение. В данном случае выходной параметр individual совпадает с участвующей в сравнении случайной матрицей.

format rat;
[number,ratio,individual] = biterr([0;0;0],randint(3,5))
number =

2 0 0 3 1

ratio =

2/3 0 0 1 1/3

individual =

1 0 0 1 0
1 0 0 1 0
0 0 0 1 1

Пример 2.

Команды, приведенные ниже, иллюстрируют использование параметра flag для изменения правила построчного сравнения, принятого по умолчанию. Обратите внимание на то, что выходные параметры number и ratio в данном случае являются скалярами, а individual имеет те же размеры, как больший из входных параметров функции biterr.

format rat;
[number,ratio,individual] = biterr([1 2; 3 4],[1 3],3,'overall')
number =

5

ratio =

5/12

individual =

0 1
1 3

Пример 3.

Приведенный ниже сценарий вносит ошибки в 10% элементов матрицы. Каждый элемент матрицы — это двухбитовое число в десятичной форме. Сценарий вычисляет вероятность ошибки на бит с помощью функции biterr и вероятность ошибки на символ с помощью функции symerr.

x = randint(100,100,4); % Исходный сигнал
% Вносим ошибки в 10 процентов элементов матрицы x.
% Ошибки могут быть равны 1, 2 или 3 (но не нулю).
errorplace = (rand(100,100) > .9); % Места введения ошибок
errorvalue = randint(100,100,[1,3]); % Величины ошибок
error = errorplace.*errorvalue;
% Добавляем ошибки и берем остаток от деления результата на 4
y = rem(x+error,4);
format short
[num_bit,ratio_bit] = biterr(x,y,2)
[num_sym,ratio_sym] = symerr(x,y)

Пример результатов работы сценария приводится ниже. Обратите внимание на то, что значение вероятности ошибки на символ (ratio_sym) близко к намеченной величине 0.10. Полученные вами результаты могут отличаться от приведенных, поскольку в примере используются случайные числа.

num_bit =
1304

ratio_bit =
0.0652

num_sym =
981

ratio_sym =
0.0981

Сопутствующие функции: symerr.

  В оглавление \ К следующему разделу \ К предыдущему разделу

 

Поиск по сайту:

Система Orphus

Яндекс.Метрика