Тип подгонки для кривого и поверхностного подбора кривой
создает 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 )
Создайте тип модели с помощью анонимной функции.
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
- Библиотечная модель для подгонкиПодбираемая модель библиотеки, заданная как вектор символов. В этой таблице показаны некоторые общие примеры.
Имя модели библиотеки | Описание |
---|---|
| Линейная полиномиальная кривая |
| Линейная полиномиальная поверхность |
| Квадратичная полиномиальная кривая |
| Кусочно-линейная интерполяция |
| Кусочно-кубическая интерполяция |
| Сглаживание сплайна (кривая) |
| Локальная линейная регрессия (поверхность) |
Список имен библиотечных моделей см. в разделе Имена моделей и уравнения.
Пример: 'poly2'
Типы данных: char
expression
- Модель для подгонкиМодель для подгонки, заданная как вектор символов. Можно задать любую команду MATLAB и, следовательно, любую .m
файл. См. «Подгонка кривой, заданной файлом».
Типы данных: char
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
| cell
'dependent'
- Имя зависимой (ответной) переменнойy
(по умолчанию) | вектор символовИмя зависимой (ответной) переменной, заданное как разделенная разделенными запятой парами, состоящая из 'dependent'
и вектор символов. Если вы не задаете зависимую переменную, функция принимает y
- зависимая переменная.
Типы данных: char
'independent'
- Независимые (ответные) имена переменныхx
(по умолчанию) | вектор символов | массив ячеек из векторов символовНезависимые (ответные) имена переменных, заданные как разделенная разделенными запятой парами, состоящая из 'independent'
и вектор символов или массив ячеек векторов символов. Если вы не задаете независимую переменную, функция принимает x
- независимая переменная.
Типы данных: char
'options'
- Опции подгонкиfitoptions
Опции подгонки, заданные как разделенная разделенными запятой парами, состоящая из 'options'
и имя fitoptions
объект.
'problem'
- Зависимые от проблемы (фиксированные) имена параметровЗависимые от задачи (фиксированные) имена параметров, заданные как разделенная разделенными запятой парами, состоящая из 'problem'
и вектор символов, или массив ячеек векторов символов с одним элементом на константу, зависящую от задачи.
Типы данных: char
| cell
aFittype
- Модель для подгонкиfittype
объектМодель для подгонки, возвращенная как fittype
. A fittype
инкапсулирует информацию, описывающую модель. Чтобы создать подгонку, вам нужны данные, fittype
, и (опционально) fitoptions
и правило исключения. Можно использовать fittype
как вход в fit
функция.
Как решить, какие переменные являются зависимыми и независимыми?
Чтобы определить зависимые и независимые переменные и коэффициенты, рассмотрим это уравнение:
.
y - зависимая переменная.
x является независимой переменной.
a, b и c являются коэффициентами.
The 'independent'
переменная - это то, чем вы управляете. The 'dependent'
переменная - это то, что вы измеряете, т.е. это зависит от независимой переменной. The '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 )
The 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,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'}
В приложении Аппроксимирование Кривыми см. Linear Fitting
тип модели.
Если выражение входа типа аппроксимации является вектором символов или анонимной функцией, то тулбокс использует нелинейный алгоритм аппроксимации, чтобы соответствовать модели данным.
Если вход выражения типа аппроксимации является массивом ячеек, то тулбокс использует линейный алгоритм аппроксимации, чтобы подгонять модель к данным.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.