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.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 выходной структуры также указывает, какая подгонка сходится и который не делает подгонка.

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=[журнал(эмпирический BER)журнал(подходящий BER)]2

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

Ссылки

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

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

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