exponenta event banner

berfit

Вписать кривую в неконтактные эмпирические данные BER

Описание

пример

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

Примечание

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

fitber = berfit(empEbNo,empber,fitEbNo) задает вектор значений Eb/N0 для использования при подборе кривой к эмпирическим данным BER в empber которые соответствуют эмпирическим значениям Eb/N0 в 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 из моделирования см. в разделе Использование фитинга кривой на графике частоты ошибок.

Наилучшее соответствие набору данных образцов

Определите диапазон значений 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, передаваемых по каналу со значением null (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 Структура вывода

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

Формирование теоретических результатов 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

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

свернуть все

Эмпирические значения Eb/N0 в дБ, заданные как вектор, содержащий не менее четырех элементов. Значения элементов в векторе должны быть в порядке возрастания.

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

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

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

Eb/N0 значения в дБ для аппроксимации кривой, заданные как вектор со значениями элементов в порядке возрастания. Длина fitEbNo должно быть равно или превышать значение ввода empEbNo.

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

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

ОбластьОписание
options.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 вычисляется для каждого параметра Eb/N0, заданного входными данными. 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 входной аргумент. Было установлено, что эти функции обеспечивают близкие соответствия в самых различных ситуациях, включая экспоненциально распадающиеся БЭР, линейно изменяющиеся БЭР и кривые БЭР с минимальными коэффициентами ошибок. В функциональных выражениях x - линейное значение Eb/N0 (не значение дБ), а f (x) - оценочное значение BER.

fittype СтоимостьФункциональное выражение
'exp'

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

'exp+const'

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

'polyRatio'

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

'doubleExp+const'

a1exp [(x a2) a3a4] + a5exp [(x a6) a7a8] + a9

Функция суммарной ошибки в квадрате, fminsearch попытки минимизировать

F=∑[log ( эмпирический BER) log ( встроенный BER)] 2

Соответствующие точки BER - это значения на выходе fitber, и сумма превышает Eb/N0 точки, заданные на входе empEbNo. Чтобы избежать доминирования областей с высоким BER над целевой функцией, уравнение суммы в квадрате использует логарифм значений BER, а не сами значения BER.

Ссылки

[1] Чапра, Стивен С. и Раймонд П. Канале. Численные методы для инженеров. Четвертое издание. Нью-Йорк, Макгроу-Хилл, 2002.

См. также

Приложения

Функции

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