berfit

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

Синтаксис

fitber = berfit(empEbNo,empber)
fitber = berfit(empEbNo,empber,fitEbNo)
fitber = berfit(empEbNo,empber,fitEbNo,options)
fitber = berfit(empEbNo,empber,fitEbNo,options,fittype)
[fitber,fitprops] = berfit(...)
berfit(...)
berfit(empEbNo,empber,fitEbNo,options,'all')

Описание

fitber = berfit(empEbNo,empber) соответствует кривой к эмпирическим данным о BER в векторном empber и возвращает вектор из подходящих точек частоты ошибок по битам (BER). Значения в empber и fitber соответствуйте значениям E b/N0, в дБ, данном empEbNo. Векторный empEbNo должно быть в порядке возрастания и должен иметь по крайней мере четыре элемента.

Примечание

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

fitber = berfit(empEbNo,empber,fitEbNo) соответствует кривой к эмпирическим данным о BER в векторном empber соответствие значениям E b/N0, в дБ, данном empEbNo. Функция затем оценивает кривую в значениях E b/N0, в дБ, данном fitEbNo и возвращает подходящие точки BER. Длина fitEbNo должен равняться или превысить тот из empEbNo.

fitber = berfit(empEbNo,empber,fitEbNo,options) использует структуру options заменять опции по умолчанию, используемые для оптимизации. Эти опции - те используемые fminsearch функция. Можно создать options структура с помощью optimset функция. Особенно соответствующие поля описаны в приведенной ниже таблице.

Поле Описание
options.DisplayLevel of display: 'off' (значение по умолчанию) не отображает вывода; 'iter' отображает вывод в каждой итерации; 'final' отображает только окончательный вывод; 'notify' отображает вывод, только если функция не сходится.
options.MaxFunEvalsМаксимальное количество вычислений функции перед оптимизацией прекращается. Значение по умолчанию равняется 104.
options.MaxIterМаксимальное количество итераций перед оптимизацией прекращается. Значение по умолчанию равняется 104.
options.TolFunДопуск завершения на функции закрытой формы раньше генерировал подгонку. Значение по умолчанию 10-4.
options.TolXДопуск завершения на содействующих значениях функции закрытой формы раньше генерировал подгонку. Значение по умолчанию 10-4.

fitber = berfit(empEbNo,empber,fitEbNo,options,fittype) задает, какая закрытая форма функционируют berfit использование, чтобы соответствовать эмпирическим данным, от возможных подгонок, перечисленных в Алгоритмах ниже. fittype может быть 'exp', 'exp+const', 'polyRatio', или 'doubleExp+const'. Чтобы избежать переопределяющих опций оптимизации по умолчанию, используйте options = [].

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

Поле Описание
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Количество проделанных итераций в минимизации функции квадратичной невязки суммы. Это не обязательно равно количеству вычислений функции.

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

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

Примечание

Допустимая подгонка должна быть

  • с действительным знаком

  • монотонно уменьшение

  • больше, чем или равный 0 и меньше чем или равный 1

Если подгонка не подтверждает к этому критерии, она отклоняется.

Примеры

свернуть все

Эти примеры иллюстрируют синтаксис berfit функция, но они используют трудно закодированные или теоретические данные о BER для простоты. Для примера, который использует эмпирические данные о BER из симуляции, смотрите Curve Fitting График Коэффициента ошибок.

Лучший подходящий для демонстрационного набора данных

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

Постройте лучшую подгонку. Кривая соединяет точки, созданные путем выполнения подходящего выражения в значениях в EbN0. Чтобы заставить кривую выглядеть более сглаженной, используйте синтаксис как berfit(EbN0,berdata,[0:0.2:13]). Этот альтернативный синтаксис использует больше точек при графическом выводе кривой, но это не изменяет подходящее выражение.

Подходящий для BER изгибаются с ошибочным полом

Мы генерируем эмпирический массив BER путем симуляции канала с пустым указателем (ch = [0.5 0.47]) с модуляцией BPSK и линейным эквалайзером MMSE в приемнике. Мы запускаем berfit со 'всей' опцией. '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');

Использование options введите структуру, а также fitprops вывод структуры

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

M = 8; EbN0 = 3:10;
berdata = berfading(EbN0,'psk',M,2); % Compute theoretical BER.
noisydata = berdata.*[.93 .92 1 .59 .08 .15 .01 .01];
% Say when fit fails to converge.
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

Алгоритмы

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

Ссылки

Для общего описания неограниченной нелинейной оптимизации смотрите, что следующее работает.

[1] Chapra, Стивен К., и Рэймонд П. Кэнэйл, численные методы для инженеров, Фоерт-Эдайшн, Нью-Йорк, McGraw-Hill, 2002.

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