berfit

Построение кривой, по эмпирическим данным BER

Описание

пример

fitber = berfit(empEbNo,empber) соответствует кривой эмпирическим данным BER, empber, и возвращает вектор настроенных точек BER. Значения в empber и fitber соответствуют эмпирической энергии на бит в отношении шума степени коэффициента спектральной плотности (E b/ N 0) значения, заданные empEbNo. Общее описание нелинейной оптимизации без ограничений смотрите в [1].

Примечание

berfit функция предназначена для аппроксимирования кривыми или интерполяции (не экстраполяции). Экстраполяция данных BER сверх порядка величины ниже наименьшего эмпирического значения BER по своей сути ненадежна.

fitber = berfit(empEbNo,empber,fitEbNo) задает вектор значений E b/ N 0, которые будут использоваться при подгонке кривой к эмпирическим данным BER в empber которые соответствуют эмпирическим значениям E b/ N 0 в empEbNo.

fitber = berfit(empEbNo,empber,fitEbNo,options) задает структуру для переопределения опций по умолчанию, используемых для оптимизации.

fitber = berfit(empEbNo,empber,fitEbNo,options,fittype) задает функцию закрытой формы, используемую для соответствия эмпирическим данным. Если вы не хотите переопределять опции по умолчанию для оптимизации, задайте options как [].

[fitber,fitprops] = berfit(___) возвращает fitprops структура с полями, которые описывают свойства кривой подгонки. Используйте любую комбинацию входных аргументов из предыдущих синтаксисов.

berfit(___) строит графики эмпирических и подгоняемых данных BER.

berfit(empEbNo,empber,fitEbNo,options,'all') строит графики эмпирических и подгоняемых данных BER из всех возможных настроек fittype которые действительны. Если вы не хотите переопределять опции по умолчанию для оптимизации, задайте options как [].

Примечание

Чтобы быть действительным, подгонка должна соответствовать этим критериям, в противном случае она отклоняется.

  • реальное значение

  • монотонно уменьшающийся

  • больше или равно 0 и меньше или равно 1

Примеры

свернуть все

Этот пример показывает использование berfit функция, использующая жестко закодированные или теоретические точки BER для простоты. Для примера, который использует эмпирические данные BER из симуляции, смотрите Использование Аппроксимирование Кривыми on Error Rate Plot.

Лучшая подгонка для набора выборочных данных

Задайте область значений Eb/N0 значения и точки BER. Используйте эти данные в качестве входов для berfit функция.

EbN0 = 0:13;
berdata = [.2 .15 .13 .12 .08 .09 .08 .07 .06 .04 .03 .02 .01 .004];
berfit(EbN0,berdata); 

Figure contains an axes. The axes with title BER vs. Eb/No with Best Curve Fit contains 2 objects of type line. These objects represent Empirical BER, Poly Ratio Fit.

Построение оптимальной подгонки

Кривая соединяет точки, созданные путем вычисления выражения аппроксимации в заданном Eb/N0 значения. Чтобы сделать кривую более гладкой, предоставьте вход вектор Eb/N0 значения для аппроксимирования кривыми в порядке возрастания. Этот вектор предоставляет больше точек для графического изображения графика кривой и не изменяет выражение аппроксимации.

fitEbNo = 0:0.2:13;
berfit(EbN0,berdata,fitEbNo)

Figure contains an axes. The axes with title BER vs. Eb/No with Best Curve Fit contains 2 objects of type line. These objects represent Empirical BER, Poly Ratio Fit.

Подгонка для BER-кривой с полом ошибок

Запуск berfit функция, использующая 'all' опция на эмпирических результатах BER для симуляции данных BPSK, переданных по каналу с нулем (ch = [0.5 0.47]) и восстановлен при помощи линейного эквалайзера MMSE в приемник для Eb/N0 область значений [-10, 15]. Сравнение результатов методов аппроксимирования кривыми

  • 'doubleExp+const' тип подгонки не обеспечивает допустимую подгонку

  • 'exp' тип подгонки плохо работает для этих данных

  • 'exp+const' и 'polyRatio' типы подгонки тесно соответствуют моделируемым данным

EbN0 = -10:3:15;
empBER = [0.3361 0.3076 0.2470 0.1878 0.1212 0.0845 0.0650 0.0540 0.0474];
figure;
berfit(EbN0,empBER,[],[],'all');

Figure contains an axes. The axes with title BER vs. Eb/No with All Curve Fits contains 4 objects of type line. These objects represent Empirical BER, Exp Fit, Exp Plus Const Fit, Poly Ratio Fit.

Использование options Входная структура и fitprops Структура output

The 'notify' значение для уровня отображения заставляет функцию выдавать выход, когда одна из попыток не сходится. The exitState поле структуры output указывает, какой тип подгонки сходится.

Сгенерируйте теоретические результаты BER для 8-PSK данных с порядком разнесения 2, переданные по Каналу с релеевским замиранием для Eb/N0 область значений [3, 10] дБ.

M = 8; EbN0 = 3:10;
berdata = berfading(EbN0,'psk',M,2); % Compute the theoretical BER
noisydata = berdata.*[.93 .92 1 .59 .08 .15 .01 .01];

Создайте options структура при помощи optimset функция для конфигурирования отображения и уведомления о результатах типа подгонки. Запустите экспоненциал и полиномиальное соотношение подгонки типами.

options = optimset('display','notify');
disp('*** Trying exponential fit.') % Poor fit
*** Trying exponential fit.
[fitber1,fitprops1] = berfit(EbN0,noisydata,EbN0,...
   options,'exp')
 
Exiting: Maximum number of function evaluations has been exceeded
         - increase MaxFunEvals option.
         Current function value: 2.749919 
fitber1 = 1×8

    0.1247    0.0727    0.0376    0.0168    0.0064    0.0020    0.0005    0.0001

fitprops1 = struct with fields:
       fitType: 'exp'
        coeffs: [4x1 double]
      sumSqErr: 2.7499
     exitState: 'The maximum number of function evaluations has been exceeded'
     funcCount: 10001
    iterations: 6193

disp('*** Trying polynomial ratio fit.') % Good fit
*** Trying polynomial ratio fit.
[fitber2,fitprops2] = berfit(EbN0,noisydata,EbN0,...
   options,'polyRatio')
fitber2 = 1×8

    0.1701    0.0874    0.0407    0.0169    0.0060    0.0016    0.0003    0.0001

fitprops2 = struct with fields:
       fitType: 'polyRatio'
        coeffs: [6x1 double]
      sumSqErr: 2.3880
     exitState: 'The curve fit converged to a solution'
     funcCount: 554
    iterations: 331

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

свернуть все

Эмпирические E b/ N 0 значения в дБ, заданные как вектор с по крайней мере четырьмя элементами. Значения элемента в векторе должны быть в порядке возрастания.

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

Эмпирические данные BER, заданные как вектор с таким же количеством элементов, как и входные empEbNo. Значения в empber соответствуют значениям E b/ N 0 заданным empEbNo.

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

E b/ N 0 значения в дБ для аппроксимирования кривыми, заданные как вектор со значениями элемента в порядке возрастания. Длина fitEbNo должен равняться или превышать таковую у входа empEbNo.

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

Переопределите опции по умолчанию, используемые для оптимизации, заданные как структура. Поля, указанные в options структуры используются fminsearch функция. Можно создать options структуру при помощи optimset функция. Эта таблица описывает поля, которые наиболее релевантны при использовании berfit функция. Чтобы использовать опции по умолчанию, можно задать этот вход как [].

ОбластьОписание
options.Display

Level of display.

  • 'off' (по умолчанию) -- не отображает выход

  • 'iter' - отображает вывод при каждой итерации

  • 'final' -- отображает только окончательный выход

  • 'notify' -- отображает вывод только, если функция не сходится

options.MaxFunEvalsМаксимальное количество вычислений функции перед прекращением оптимизации. Значение по умолчанию является 104.
options.MaxIterМаксимальное количество итераций перед прекращением оптимизации. Значение по умолчанию является 104.
options.TolFunДопуск на разрыв для функции закрытой формы, используемой для генерации подгонки. Значение по умолчанию является 10-4.
options.TolXДопуск на разрыв для значений коэффициентов функции закрытой формы, используемой для генерации подгонки. Значение по умолчанию является 10-4.

Типы данных: struct

Функция закрытой формы, используемая для соответствия эмпирическим данным, заданная как 'exp', 'exp+const', 'polyRatio', или 'doubleExp+const'. Для получения дополнительной информации см. «Алгоритмы».

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

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

свернуть все

Установленные точки BER, возвращенные как вектор. BER вычисляется для каждой настройки E b/ N 0, заданной входным empEbNo вектор.

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

Свойства аппроксимации, возвращенные как структура с этими полями для описания свойств подгонки кривой.

ОбластьОписание
fitprops.fitTypeТип функции закрытой формы, используемый для генерации подгонки. Допустимые значения: 'exp', 'exp+const', 'polyRatio', или 'doubleExp+const'.
fitprops.coeffsКоэффициенты, используемые для генерации подгонки. Если функция не может найти допустимую подгонку, fitprops.coeffs - пустой вектор.
fitprops.sumSqErrСуммарная квадратичная невязка между журналом установленных точек BER и логарифмической частотой эмпирических точек BER.
fitprops.exitState

Выходное условие berfit. Допустимые значения включают:

  • 'The curve fit converged to a solution.'

  • 'The maximum number of function evaluations was exceeded.'

  • 'No desirable fit was found.'

fitprops.funcCountКоличество вычислений функции, используемых при минимизации функции квадратичной невязки суммы.
fitprops.iterationsКоличество проделанных итераций в минимизации функции квадратичной невязки суммы. Это значение не обязательно равно количеству вычислений функции.

Типы данных: struct

Алгоритмы

berfit функция подходит для данных BER, используя нелинейную оптимизацию без ограничений через fminsearch функция. В этой таблице перечислены функции закрытой формы, которые berfit рассматривает на основе значения fittype входной параметр. Эмпирически было обнаружено, что эти функции обеспечивают тесную подгонку в самых разных ситуациях, включая экспоненциально разрушающиеся BER, линейно изменяющиеся BER и BER кривые с полами вероятности ошибок. В функциональных выражениях x является линейным E b/ N 0 значением (не значением дБ), и f(x) является предполагаемым BER.

fittype ЗначениеФункциональное выражение
'exp'

f(x)=a1exp[(xa2)a3a4]

'exp+const'

f(x)=a1exp[(xa2)a3a4]+a5

'polyRatio'

f(x)=a1x2+a2x+a3x3+a4x2+a5x+a6

'doubleExp+const'

a1exp[(xa2)a3a4]+a5exp[(xa6)a7a8]+a9

Сумма квадратичной невязки функция, которая fminsearch пытается минимизировать,

F=[log(empirical BER)log(установленный BER)]2

Установленные точки BER являются значениями в выход fitber, и сумма по E b/ N 0 точкам, заданным во входе empEbNo. Чтобы избежать областей с высоким BER, доминирующих над целевой функцией, в уравнении с суммарным квадратом используется журнал значений BER, а не самих значений BER.

Ссылки

[1] Chapra, Steven C., and Raymond P. Canale. Численные методы для инженеров. Четвертое издание. Нью-Йорк, McGraw-Hill, 2002.

См. также

Приложения

Функции

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