berfit

Подходящая кривая, чтобы не сглаживать эмпирические данные о BER

Описание

пример

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

Примечание

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

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

Лучший подходящий для набора выборочных данных

Задайте область значений 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 object. The axes object 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 object. The axes object 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 object. The axes object 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 поле структуры 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/N0 в дБ в виде вектора по крайней мере с четырьмя элементами. Значения элемента в векторе должны быть в порядке возрастания.

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

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

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

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

Ссылки

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

Смотрите также

Приложения

Функции

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