Подходящий тип для кривой и поверхностного подбора кривой
aFittype = fittype(libraryModelName)
aFittype = fittype(expression)
aFittype = fittype(expression,Name,Value)
aFittype = fittype(linearModelTerms)
aFittype = fittype(linearModelTerms,Name,Value)
aFittype = fittype(anonymousFunction)
aFittype = fittype(anonymousFunction,Name,Value)
создает объект aFittype
= fittype(libraryModelName
)fittype
aFittype
для модели, заданной libraryModelName
.
создает подходящий тип для модели, заданной выражением MATLAB®. aFittype
= fittype(expression
)
создает подходящий тип с дополнительными опциями, заданными одним или несколькими аргументами пары aFittype
= fittype(expression
,Name,Value
)Name,Value
.
создает подходящий тип для пользовательской линейной модели с условиями, заданными массивом ячеек выражений вектора символов в aFittype
= fittype(linearModelTerms
)linearModelTerms
.
создает подходящий тип с дополнительными опциями, заданными одним или несколькими аргументами пары aFittype
= fittype(linearModelTerms
,Name,Value
)Name,Value
.
создает подходящий тип для модели, заданной aFittype
= fittype(anonymousFunction
)anonymousFunction
.
создает подходящий тип с дополнительными опциями, заданными одним или несколькими аргументами пары aFittype
= fittype(anonymousFunction
,Name,Value
)Name,Value
.
Создайте подходящие типы путем определения имен модели библиотеки.
Создайте объект fittype
для модели библиотеки кубического полинома.
f = fittype('poly3')
f = Linear model Poly3: f(p1,p2,p3,p4,x) = p1*x^3 + p2*x^2 + p3*x + p4
Создайте подходящий тип для модели rat33
библиотеки (рациональная модель третьей степени и для числителя и для знаменателя).
f = fittype('rat33')
f = General model Rat33: f(p1,p2,p3,p4,q1,q2,q3,x) = (p1*x^3 + p2*x^2 + p3*x + p4) / (x^3 + q1*x^2 + q2*x + q3)
Для списка имен модели библиотеки смотрите libraryModelName
.
Чтобы использовать линейный алгоритм подбора, задайте массив ячеек условий.
Идентифицируйте, что линейная модель называет вас, должен ввести к fittype
: a*x + b*sin(x) + c
. Модель линейна в a
, b
и c
. Это имеет три условия x
, sin(x)
и 1
(потому что c=c*1
). Чтобы задать эту модель, вы используете этот массив ячеек условий: LinearModelTerms = {'x','sin(x)','1'}
.
Используйте массив ячеек линейных образцовых условий с должности входа к fittype
.
ft = fittype({'x','sin(x)','1'})
ft = Linear model: ft(a,b,c,x) = a*x + b*sin(x) + c
Создайте линейный образцовый подходящий тип для a*cos(x) + b
.
ft2 = fittype({'cos(x)','1'})
ft2 = Linear model: ft2(a,b,x) = a*cos(x) + b
Создайте подходящий тип снова и задайте содействующие имена.
ft3 = fittype({'cos(x)','1'},'coefficients',{'a1','a2'})
ft3 = Linear model: ft3(a1,a2,x) = a1*cos(x) + a2
Создайте подходящие типы для пользовательских нелинейных моделей, определяя зависимые проблемой параметры и независимые переменные.
Создайте подходящий тип для пользовательской нелинейной модели, определяя n
как зависимый проблемой параметр и u
как независимая переменная.
g = fittype('a*u+b*exp(n*u)',... 'problem','n',... 'independent','u')
g = General model: g(a,b,n,u) = a*u+b*exp(n*u)
Создайте подходящий тип для пользовательской нелинейной модели, определяя time
как независимую переменную.
g = fittype('a*time^2+b*time+c','independent','time','dependent','height')
g = General model: g(a,b,c,time) = a*time^2+b*time+c
Создайте подходящий тип для логарифмического приближения к некоторым данным, используйте подходящий тип, чтобы создать подгонку и построить подгонку.
x = linspace(1,100); y = 5 + 7*log(x); myfittype = fittype('a + b*log(x)',... 'dependent',{'y'},'independent',{'x'},... 'coefficients',{'a','b'})
myfittype = General model: myfittype(a,b,x) = a + b*log(x)
myfit = fit(x',y',myfittype)
Warning: Start point not provided, choosing random start point.
myfit = General model: myfit(x) = a + b*log(x) Coefficients (with 95% confidence bounds): a = 5 (5, 5) b = 7 (7, 7)
plot(myfit,x,y)
Можно задать любую команду MATLAB и поэтому любой файл .m
.
Задайте функцию в файле и используйте его, чтобы создать подходящий тип и соответствовать кривой.
Задайте функцию в файле MATLAB.
function y = piecewiseLine(x,a,b,c,d,k) % PIECEWISELINE A line made of two pieces % that is not continuous. y = zeros(size(x)); % This example includes a for-loop and if statement % purely for example purposes. for i = 1:length(x) if x(i) < k, y(i) = a + b.* x(i); else y(i) = c + d.* x(i); end end end
Сохраните файл.
Задайте некоторые данные, создайте подходящий тип, задающий функциональный piecewiseLine
, создайте подгонку с помощью подходящего типа ft
и постройте результаты.
x = [0.81;0.91;0.13;0.91;0.63;0.098;0.28;0.55;... 0.96;0.96;0.16;0.97;0.96]; y = [0.17;0.12;0.16;0.0035;0.37;0.082;0.34;0.56;... 0.15;-0.046;0.17;-0.091;-0.071]; ft = fittype( 'piecewiseLine( x, a, b, c, d, k )' ) f = fit( x, y, ft, 'StartPoint', [1, 0, 1, 0, 0.5] ) plot( f, x, y )
Чтобы использовать линейный алгоритм подбора, задайте массив ячеек условий.
Идентифицируйте, что линейная модель называет вас, должен ввести к fittype
: a*x + b*sin(x) + c
. Модель линейна в a
, b
и c
. Это имеет три условия x
, sin(x)
и 1
(потому что c=c*1
). Чтобы задать эту модель, вы используете этот массив ячеек условий: LinearModelTerms = {'x','sin(x)','1'}
.
Используйте массив ячеек линейных образцовых условий с должности входа к fittype
.
ft = fittype({'x','sin(x)','1'})
ft = Linear model: ft(a,b,c,x) = a*x + b*sin(x) + c
Создайте линейный образцовый подходящий тип для a*cos(x) + b
.
ft2 = fittype({'cos(x)','1'})
ft2 = Linear model: ft2(a,b,x) = a*cos(x) + b
Создайте подходящий тип снова и задайте содействующие имена.
ft3 = fittype({'cos(x)','1'},'coefficients',{'a1','a2'})
ft3 = Linear model: ft3(a1,a2,x) = a1*cos(x) + a2
Создайте подходящий тип с помощью анонимной функции.
g = fittype( @(a, b, c, x) a*x.^2+b*x+c )
Создайте подходящий тип с помощью анонимной функции и задайте независимые и зависимые параметры.
g = fittype( @(a, b, c, d, x, y) a*x.^2+b*x+c*exp(... -(y-d).^2 ), 'independent', {'x', 'y'},... 'dependent', 'z' );
Создайте подходящий тип для поверхности с помощью анонимной функции и задайте независимые и зависимые параметры и проблемные параметры, которые вы зададите позже, когда вы вызовете fit
.
g = fittype( @(a,b,c,d,x,y) a*x.^2+b*x+c*exp( -(y-d).^2 ), ... 'problem', {'c','d'}, 'independent', {'x', 'y'}, ... 'dependent', 'z' );
Используйте анонимную функцию, чтобы передать данные о рабочей области в функции fit
и fittype
.
Создайте и постройте S-образную кривую. На более поздних шагах вы расширяете и перемещаете эту кривую, чтобы соответствовать к некоторым данным.
% Breakpoints. xs = (0:0.1:1).'; % Height of curve at breakpoints. ys = [0; 0; 0.04; 0.1; 0.2; 0.5; 0.8; 0.9; 0.96; 1; 1]; % Plot S-shaped curve. xi = linspace( 0, 1, 241 ); plot( xi, interp1( xs, ys, xi, 'pchip' ), 'LineWidth', 2 ) hold on plot( xs, ys, 'o', 'MarkerFaceColor', 'r' ) hold off title S-curve
Создайте подходящий тип с помощью анонимной функции, приняв, значения из рабочей области для кривой устанавливают точки останова (xs
) и высота кривой в точках останова (ys
). Коэффициентами является b
(основа) и h
(высота).
ft = fittype( @(b, h, x) interp1( xs, b+h*ys, x, 'pchip' ) )
Постройте fittype
, задающий коэффициенты в качестве примера основного b=1.1
и высоты h=-0.8
.
plot( xi, ft( 1.1, -0.8, xi ), 'LineWidth', 2 ) title 'Fittype with b=1.1 and h=-0.8'
Загрузите и соответствуйте некоторым данным, с помощью подходящего типа, ft
создал стоимость рабочей области использования.
% Load some data xdata = [0.012;0.054;0.13;0.16;0.31;0.34;0.47;0.53;0.53;... 0.57;0.78;0.79;0.93]; ydata = [0.78;0.87;1;1.1;0.96;0.88;0.56;0.5;0.5;0.5;0.63;... 0.62;0.39]; % Fit the curve to the data f = fit( xdata, ydata, ft, 'Start', [0, 1] ) % Plot fit plot( f, xdata, ydata ) title 'Fitted S-curve'
Этот пример показывает различия между использованием анонимных функций с проблемными параметрами и значениями переменных рабочей области.
Загрузите данные, создайте подходящий тип для кривой с помощью анонимной функции с проблемными параметрами и вызовите fit
, задающий проблемные параметры.
% Load some data. xdata = [0.098;0.13;0.16;0.28;0.55;0.63;0.81;0.91;0.91;... 0.96;0.96;0.96;0.97]; ydata = [0.52;0.53;0.53;0.48;0.33;0.36;0.39;0.28;0.28;... 0.21;0.21;0.21;0.2]; % Create a fittype that has a problem parameter. g = fittype( @(a,b,c,x) a*x.^2+b*x+c, 'problem', 'c' ) % Examine coefficients. Observe c is not a coefficient. coeffnames( g ) % Examine arguments. Observe that c is an argument. argnames( g ) % Call fit and specify the value of c. f1 = fit( xdata, ydata, g, 'problem', 0, 'StartPoint', [1, 2] ) % Note: Specify start points in the calls to fit to % avoid warning messages about random start points % and to ensure repeatability of results. % Call fit again and specify a different value of c, % to get a new fit. f2 = fit( xdata, ydata, g, 'problem', 1, 'start', [1, 2] ) % Plot results. Observe the specified c constants % do not make a good fit. plot( f1, xdata, ydata ) hold on plot( f2, 'b' ) hold off
Измените предыдущий пример, чтобы создать те же подгонки с помощью стоимости рабочей области для переменных, вместо того, чтобы использовать проблемные параметры. Используя те же данные, создайте подходящий тип для кривой с помощью анонимной функции со значением рабочей области для переменной c
:
% Remove c from the argument list. try g = fittype( @(a,b,x) a*x.^2+b*x+c ) catch e disp( e.message ) end % Observe error because now c is undefined. % Define c and create fittype: c = 0; g1 = fittype( @(a,b,x) a*x.^2+b*x+c ) % Call fit (now no need to specify problem parameter). f1 = fit( xdata, ydata, g1, 'StartPoint', [1, 2] ) % Note that this f1 is the same as the f1 above. % To change the value of c, recreate the fittype. c = 1; g2 = fittype( @(a,b,x) a*x.^2+b*x+c ) % uses c = 1 f2 = fit( xdata, ydata, g2, 'StartPoint', [1, 2] ) % Note that this f2 is the same as the f2 above. % Plot results plot( f1, xdata, ydata ) hold on plot( f2, 'b' ) hold off
libraryModelName
— Library, чтобы соответствоватьМодель Library, чтобы соответствовать, заданный как вектор символов. Эта таблица показывает некоторые типичные примеры.
Имя модели библиотеки | Описание |
---|---|
| Линейная полиномиальная кривая |
| Линейная полиномиальная поверхность |
| Квадратичная полиномиальная кривая |
| Кусочная линейная интерполяция |
| Кусочная кубичная интерполяция |
| Сглаживание сплайна (кривая) |
| Локальная линейная регрессия (поверхность) |
Для списка имен модели библиотеки смотрите Имена модели и уравнения.
Пример: 'poly2'
Типы данных: char
выражение
Модель, чтобы соответствоватьМодель, чтобы соответствовать, заданный как вектор символов. Можно задать любую команду MATLAB и поэтому любой файл .m
. Сочтите целесообразным Кривая, Заданная Файлом.
Типы данных: char
linearModelTerms
— Модель, чтобы соответствоватьМодель, чтобы соответствовать, заданный как массив ячеек из символьных векторов. Задайте образцовые условия по выражениям в векторах символов. Не включайте коэффициенты в выражения для условий. См. Линейные Образцовые Условия.
Типы данных: cell
anonymousFunction
— Модель, чтобы соответствоватьМодель, чтобы соответствовать, заданный как анонимная функция. Для получения дополнительной информации смотрите Входной Порядок для Анонимных функций.
Типы данных: char
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'coefficients',{'a1','a2'}
'coefficients'
— Содействующие именаСодействующие имена, заданные как пара, разделенная запятой, состоящая из 'coefficients'
и вектора символов или массива ячеек из символьных векторов для нескольких имен. Можно использовать мультисимвольные имена символа. Вы не можете использовать эти имена: i
, j
, pi
, inf
, nan
, eps
.
Типы данных: char | cell
'dependent'
— Зависимый (ответ) имя переменнойy
(значение по умолчанию) | вектор символовЗависимый (ответ) имя переменной, заданное как пара, разделенная запятой, состоящая из 'dependent'
и вектора символов. Если вы не задаете зависимую переменную, функция принимает, что y
является зависимой переменной.
Типы данных: char
'independent'
— Независимый (ответ) имена переменныхx
(значение по умолчанию) | вектор символов | массив ячеек из символьных векторовНезависимый (ответ) имена переменных, заданные как пара, разделенная запятой, состоящая из 'independent'
и вектора символов или массива ячеек из символьных векторов. Если вы не задаете независимую переменную, функция принимает, что x
является независимой переменной.
Типы данных: char
Опции
Подходящие опцииfitoptions
Подходящие опции, заданные как пара, разделенная запятой, состоящая из 'options'
и имя объекта fitoptions
.
'problem'
— Проблемный зависимый (зафиксировал) названия параметраПроблемный зависимый (зафиксировал) названия параметра, заданные как пара, разделенная запятой, состоящая из 'problem'
и вектора символов или массива ячеек из символьных векторов с одним элементом на проблемного постоянного зависимого.
Типы данных: char | cell
aFittype
— Модель, чтобы соответствоватьfittype
Модель, чтобы соответствовать, возвращенный как fittype
. fittype
инкапсулирует информацию, описывающую модель. Чтобы создать подгонку, вам нужны данные, fittype
, и (опционально) fitoptions
и правило исключения. Можно использовать fittype
в качестве входа к функции fit
.
Как я решаю, какие переменные зависят и независимы?
Чтобы определить зависимые и независимые переменные и коэффициенты, рассмотрите это уравнение:
.
y является зависимой переменной.
x является независимой переменной.
a, b и c являются коэффициентами.
Переменная 'independent'
- то, чем вы управляете. Переменная 'dependent'
- то, что вы измеряете, т.е. она зависит от независимой переменной. 'coefficients'
является параметрами, которые оценивает алгоритм подбора.
Например, если у вас есть данные о переписи, затем год является независимой переменной, потому что это ни от чего не зависит. Генеральная совокупность является зависимой переменной, потому что ее значение зависит от года, в котором проведена перепись. Если параметр как темп роста является частью модели, таким образом, алгоритм подбора оценивает его, то параметр является одним из 'coefficients'
.
Функция fittype
определяет входные параметры путем поиска подходящего входа выражения типа имена переменных. fittype
принимает, что x
является независимой переменной, y
является зависимой переменной, и все другие переменные являются коэффициентами модели. x
используется, если никакая переменная не существует.
Если подходящий вход выражения типа является анонимной функцией, то порядок входных параметров должен быть правильным. Входной порядок позволяет функции fittype
определить, который входные параметры являются коэффициентами, чтобы оценить, зависимые проблемой параметры и независимые переменные.
Порядок входных параметров к анонимной функции должен быть:
fcn = @(coefficients,problemparameters,x,y) expression
y
являются дополнительными. Последние аргументы, x
и y
, представляют независимые переменные: только x
для кривых, но x
и y
для поверхностей. Если вы не хотите использовать x
и/или y
, чтобы назвать независимые переменные, то задайте различные имена с помощью пары "имя-значение" аргумента 'independent'
. Однако безотносительно имени или имен вы выбираете, эти аргументы должны быть последними аргументами к анонимной функции.Анонимные функции облегчают передавать другие данные в функции fit
и fittype
.
Создайте подходящий тип с помощью анонимной функции и значения переменных (c
) из рабочей области.
c = 1; g = fittype( @(a, b, x) a*x.^2+b*x+c )
Функция fittype
может использовать значения переменных в вашей рабочей области, когда вы создаете подходящий тип. Чтобы передать в новых данных из рабочей области, воссоздайте подходящий тип, например,
c = 5 % Change value of c.
g = fittype( @(a, b, x) a*x.^2+b*x+c )
Здесь, значение c
фиксируется, когда вы создаете подходящий тип. Чтобы задать значение c
в то время, когда вы вызываете fit
, можно использовать проблемные параметры. Например, сделайте подгонку с c = 2
и затем новую подгонку с c = 3
.
g = fittype( @(a,b,x) a*x.^2+b*x+c, 'problem', 'c' ) f1 = fit( xdata, ydata, g, 'problem', 2 ) f2 = fit( xdata, ydata, g, 'problem', 3 )
Как я задаю линейные образцовые условия?
Чтобы использовать линейный алгоритм подбора, задайте linearModelTerms
как массив ячеек условий.
afittype = fittype({expr1,...,exprn})
expr2,...,exprn
. Не включайте коэффициенты в выражения для условий. Если существует постоянный термин, используйте '1'
в качестве соответствующего выражения в массиве ячеек.Задавать линейную модель следующей формы:
coeff1 * term1 + coeff2 * term2 + coeff3 * term3 + ...
term1
, term2
, и т.д., используйте массив ячеек, где каждый термин, без коэффициентов, задан в ячейке expr
, можно следующим образом:LinearModelTerms = {'term1', 'term2', 'term3', ... }
Например, модель
a*x + b*sin(x) + c
a
, b
и c
. Это имеет три условия x
, sin(x)
и 1
(потому что c=c*1), и поэтому expr
:LinearModelTerms = {'x','sin(x)','1'}
В приложении Curve Fitting смотрите тип модели Linear Fitting
.
Если подходящий вход выражения типа является вектором символов или анонимной функцией, то тулбокс использует нелинейный алгоритм подбора, чтобы соответствовать модели к данным.
Если подходящий вход выражения типа является массивом ячеек условий, то тулбокс использует линейный алгоритм подбора, чтобы соответствовать модели к данным.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.