Тип подгонки для кривой и фитинга поверхности
создает 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 функция.
Как определить, какие переменные являются зависимыми и независимыми?
Для определения зависимых и независимых переменных и коэффициентов рассмотрим следующее уравнение:
x) + (c * x2).
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 функция может использовать значения переменных в рабочем пространстве при создании типа посадки. Для передачи новых данных из рабочего пространства повторно создайте тип посадки, например,
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.