Подходящий тип для кривой и поверхностного подбора кривой
создает 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
.
Создайте подходящие типы для пользовательских нелинейных моделей, определяя зависимые проблемой параметры и независимые переменные.
Создайте подходящий тип для пользовательской нелинейной модели, определяя 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
файл.
Чтобы использовать линейный алгоритм подбора, задайте массив ячеек терминов.
Идентифицируйте, что линейная модель называет вас, должен ввести к 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
Задайте функцию в файле и используйте его, чтобы создать подходящий тип и соответствовать кривой.
Задайте функцию в файле 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 )
Создайте подходящий тип с помощью анонимной функции.
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' );
Используйте анонимную функцию, чтобы передать данные о рабочей области в fittype
и fit
функции.
Создайте и постройте 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 |
string
expression
— Модель, чтобы соответствоватьМодель, чтобы соответствовать в виде вектора символов или строкового скаляра. Можно задать любую команду MATLAB и поэтому любой .m
файл. Сочтите целесообразным Кривая, Заданная Файлом.
Типы данных: char |
string
linearModelTerms
— Модель, чтобы соответствоватьМодель, чтобы соответствовать в виде массива ячеек из символьных векторов или массива строк. Задайте термины модели по выражениям в векторах символов или строковых скалярах. Не включайте коэффициенты в выражения для терминов. См. Линейные Условия Модели.
Типы данных: cell
anonymousFunction
— Модель, чтобы соответствоватьМодель, чтобы соответствовать в виде анонимной функции. Для получения дополнительной информации смотрите Входной Порядок для Анонимных функций.
Типы данных: char
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'coefficients',{'a1','a2'}
coefficients
— Содействующие именаКоэффициент называет в виде разделенной запятой пары, состоящей из 'coefficients'
и вектор символов, строковый скаляр, массив ячеек из символьных векторов или массив строк. Можно использовать мультисимвольные имена символа. Вы не можете использовать эти имена: i
J
\Pi
Inf
NaN
eps
.
Типы данных: char |
string
| cell
dependent
— Зависимый (ответ) имя переменнойy
(значение по умолчанию) | вектор символов | строковый скалярЗависимый (ответ) имя переменной в виде разделенной запятой пары, состоящей из 'dependent'
и вектор символов или строковый скаляр. Если вы не задаете зависимую переменную, функция принимает y
зависимая переменная.
Типы данных: char |
string
independent
— Независимый (ответ) имена переменныхx
(значение по умолчанию) | вектор символов | строковый скаляр | массив ячеек из символьных векторов | массив строкНезависимый (ответ) имена переменных в виде разделенной запятой пары, состоящей из 'independent'
и вектор символов, строковый скаляр, массив ячеек из символьных векторов или массив строк. Если вы не задаете независимую переменную, функция принимает x
независимая переменная.
Типы данных: char |
string
| cell
options
— Подходящие опцииfitoptions
Подходящие опции в виде разделенной запятой пары, состоящей из 'options'
и имя fitoptions
объект.
problem
— Проблемный зависимый (зафиксировал) названия параметраПроблемный зависимый (зафиксировал) названия параметра в виде разделенной запятой пары, состоящей из 'problem'
и вектор символов, строковый скаляр, массив ячеек из символьных векторов или массив строк с одним элементом на проблемного постоянного зависимого.
Типы данных: char |
string
| 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'
пара "имя-значение" аргумента. Однако безотносительно имени или имен вы выбираете, эти аргументы должны быть последними аргументами к анонимной функции.Анонимные функции облегчают передавать другие данные в fittype
и fit
функции.
Создайте подходящий тип с помощью анонимной функции и значения переменных (c
) из рабочей области.
c = 1; g = fittype( @(a, b, x) a*x.^2+b*x+c )
fittype
функция может использовать значения переменных в вашей рабочей области, когда вы создаете подходящий тип. Чтобы передать в новых данных из рабочей области, воссоздайте подходящий тип, e.g.,
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,c) 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.