Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

fittype

Tipo de ajuste para curvas y superficies

Descripción

aFittype = fittype(libraryModelName) crea el objeto fittype aFittype para el modelo especificado por libraryModelName.

ejemplo

aFittype = fittype(expression) crea un tipo de ajuste para el modelo especificado por la expresión de MATLAB®.

aFittype = fittype(expression,Name,Value) construye el tipo de ajuste con opciones adicionales especificadas por uno o más argumentos de par Name,Value.

ejemplo

aFittype = fittype(linearModelTerms) crea un tipo de ajuste para un modelo lineal personalizado con términos especificados por las expresiones en linearModelTerms.

ejemplo

aFittype = fittype(linearModelTerms,Name,Value) construye el tipo de ajuste con opciones adicionales especificadas por uno o más argumentos de par Name,Value.

ejemplo

aFittype = fittype(anonymousFunction) crea un tipo de ajuste para el modelo especificado por anonymousFunction.

ejemplo

aFittype = fittype(anonymousFunction,Name,Value) construye el tipo de ajuste con opciones adicionales especificadas por uno o más argumentos de par Name,Value.

ejemplo

Ejemplos

contraer todo

Construya tipos de ajuste especificando nombres de modelos de biblioteca.

Construya un objeto fittype para el modelo polinomial cúbico de la biblioteca.

f = fittype('poly3')
f = 
     Linear model Poly3:
     f(p1,p2,p3,p4,x) = p1*x^3 + p2*x^2 + p3*x + p4

Construya un tipo de ajuste para el modelo de biblioteca rat33 (un modelo racional de tercer grado para el numerador y el denominador).

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)

Para ver una lista de nombres de modelos de biblioteca, consulte libraryModelName.

Cree un tipo de ajuste para un modelo no lineal personalizado, designando n como el parámetro dependiente de problemas y u como la variable independiente.

g = fittype("n*u^a",...
            problem="n",...
            independent="u")
g = 
     General model:
     g(a,n,u) = n*u^a

Cree un tipo de ajuste para un ajuste logarítmico para ciertos datos, utilice el tipo de ajuste para crear un ajuste y, después, represente el ajuste.

x = linspace(1,100);  
y = 7*log(x+5);
myfittype = fittype("a*log(x+b)",...
    dependent="y",independent="x",...
    coefficients=["a" "b"])
myfittype = 
     General model:
     myfittype(a,b,x) = a*log(x+b)
myfit = fit(x',y',myfittype)
Warning: Start point not provided, choosing random start point.
myfit = 
     General model:
     myfit(x) = a*log(x+b)
     Coefficients (with 95% confidence bounds):
       a =           7  (7, 7)
       b =           5  (5, 5)
plot(myfit,x,y)

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

La gráfica muestra que el ajuste sigue los datos.

Para utilizar un algoritmo de ajuste lineal, especifique un arreglo de celdas de términos.

Identifique los términos del modelo lineal que necesita indicar en fittype: a*x + b*sin(x) + c. El modelo es lineal en a, b y c. Tiene tres términos x, sin(x) y 1 (porque c=c*1). Para especificar este modelo utilice este arreglo de celdas de términos: LinearModelTerms = {'x','sin(x)','1'}.

Utilice el arreglo de celdas de términos de modelo lineal como entrada para fittype.

ft = fittype({'x','sin(x)','1'})
ft = 
     Linear model:
     ft(a,b,c,x) = a*x + b*sin(x) + c

Cree un tipo de ajuste de modelo lineal para a*cos(x) + b.

ft2 = fittype({'cos(x)','1'})
ft2 = 
     Linear model:
     ft2(a,b,x) = a*cos(x) + b

Cree de nuevo el tipo de ajuste y especifique los nombres de los coeficientes.

ft3 = fittype({'cos(x)','1'},'coefficients',{'a1','a2'})
ft3 = 
     Linear model:
     ft3(a1,a2,x) = a1*cos(x) + a2

Defina una función en un archivo y utilícela para crear un tipo de ajuste y ajustar una curva.

Defina una función en un archivo de 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

Guarde el archivo.

Defina algunos datos, cree un tipo de ajuste especificando la función piecewiseLine, cree un ajuste con el tipo de ajuste ft y represente los resultados.

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 ) 

Cree un tipo de ajuste con una función anónima.

g = fittype( @(a, b, c, x) a*x.^2+b*x+c )

Cree un tipo de ajuste con una función anónima y especifique los parámetros dependientes e independientes.

g = fittype( @(a, b, c, d, x, y) a*x.^2+b*x+c*exp(...
 -(y-d).^2 ), 'independent', {'x', 'y'},...
     'dependent', 'z' );

Cree un tipo de ajuste para una superficie con una función anónima y especifique los parámetros dependientes e independientes, y los parámetros de problema que especificará más adelante cuando llame a 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' ); 

Utilice una función anónima para pasar datos del área de trabajo a las funciones fittype y fit.

Cree y represente una curva con forma de S. En pasos posteriores, expandirá y moverá esta curva para ajustar ciertos datos.

% 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

Cree un tipo de ajuste con una función anónima, tomando los valores del área de trabajo para los puntos de interrupción de la curva (xs) y la altura de la curva en los puntos de interrupción (ys). Los coeficientes son b (base) y h (altura).

ft = fittype( @(b, h, x) interp1( xs, b+h*ys, x, 'pchip' ) )

Represente el fittype especificando coeficientes de ejemplo de base b=1.1 y altura h=-0.8.

plot( xi, ft( 1.1, -0.8, xi ), 'LineWidth', 2 )
title 'Fittype with b=1.1 and h=-0.8'

Cargue y ajuste algunos datos, utilizando el tipo de ajuste ft creado con los valores del área de trabajo.

% 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'

Este ejemplo muestra las diferencias entre utilizar funciones anónimas con parámetros de problema y valores de las variables del área de trabajo.

Cargue datos, cree un tipo de ajuste para una curva con una función anónima con parámetros de problema y llame a fit especificando los parámetros de problema.

% 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

Modifique el ejemplo previo para crear el mismo ajuste con los valores del área de trabajo para las variables, en lugar de utilizar parámetros de problema. Con los mismos datos, cree un tipo de ajuste para una curva usando una función anónima con un valor del área de trabajo para la variable 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

Argumentos de entrada

contraer todo

Modelo de biblioteca para el ajuste, especificado como un vector de caracteres o escalar de cadena. Esta tabla muestra algunos ejemplos habituales.

Nombre de modelo de biblioteca

Descripción

'poly1'

Curva polinomial lineal

'poly11'

Superficie polinomial lineal

'poly2'

Curva polinomial cuadrática

'linearinterp'

Interpolación lineal por tramos

'cubicinterp'

Interpolación cúbica por tramos

'smoothingspline'

Spline de suavizado (curva)

'lowess'

Regresión lineal local (superficie)

'log10'

Curva logarítmica en base 10

'logistic4'

Curva logística de cuatro parámetros

Para ver una lista de nombres de modelos de biblioteca, consulte Nombres y ecuaciones de modelos.

Ejemplo: 'poly2'

Tipos de datos: char | string

Modelo para el ajuste, especificado como un vector de caracteres o escalar de cadena. Puede especificar cualquier comando de MATLAB y, por lo tanto, cualquier archivo .m. Consulte Ajustar una curva definida por un archivo.

Tipos de datos: char | string

Modelo para el ajuste, especificado como un arreglo de celdas de vectores de caracteres o un arreglo de cadenas. Especifique los términos del modelo con las expresiones de los vectores de caracteres o escalares de cadena. No incluya coeficientes en las expresiones para los términos. Consulte Términos de modelo lineal.

Tipos de datos: cell

Modelo para el ajuste, especificado como una función anónima. Para obtener más detalles, consulte Orden de entrada para funciones anónimas.

Tipos de datos: char

Argumentos de par nombre-valor

contraer todo

Especifique pares de argumentos opcionales Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value el valor correspondiente. Los argumentos nombre-valor deben aparecer tras otros argumentos, aunque no importa el orden de los pares.

En versiones anteriores a R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: 'coefficients',{'a1','a2'}

Nombres de coeficientes, especificados como el par separado por comas compuesto por 'coefficients' y un vector de caracteres, escalar de cadena, arreglo de celdas de vectores de caracteres o arreglo de cadenas. Puede utilizar nombres de símbolos multicaracter. No puede utilizar estos nombres: i, j, pi, inf, nan, eps.

Tipos de datos: char | string | cell

Nombre de variable (respuesta) dependiente, especificado como el par separado por comas compuesto por 'dependent' y un vector de caracteres o escalar de cadena. Si no especifica la variable dependiente, la función da por supuesto que y es la variable dependiente.

Tipos de datos: char | string

Nombres de variable (respuesta) independiente, especificados como el par separado por comas compuesto por 'independent' y un vector de caracteres, escalar de cadena, arreglo de celdas de vectores de caracteres o arreglo de cadenas. Si no especifica la variable independiente, la función da por supuesto que x es la variable independiente.

Tipos de datos: char | string | cell

Opciones de ajuste, especificadas como el par separado por comas compuesto por 'options' y el nombre de un objeto fitoptions.

Nombres de parámetros dependientes de problemas (fijos), especificados como el par separado por comas compuesto por 'problem' y un vector de caracteres, escalar de cadena, arreglo de celdas de vectores de caracteres o arreglo de cadenas con un elemento por constante dependiente de problema.

Tipos de datos: char | string | cell

Argumentos de salida

contraer todo

Modelo para el ajuste, devuelto como un fittype. Un fittype contiene información que describe un modelo. Para crear un ajuste, necesita datos, un fittype y (opcionalmente) fitoptions y una regla de exclusión. Puede utilizar un fittype como entrada para la función fit.

Más acerca de

contraer todo

Algoritmos

Si la entrada de la expresión del tipo de ajuste es un vector de caracteres, un escalar de cadena o una función anónima, entonces la toolbox utiliza un algoritmo de ajuste no lineal para ajustar el modelo a los datos.

Si la entrada de la expresión del tipo de ajuste es un arreglo de celdas o un arreglo de cadenas de términos, entonces la toolbox utiliza un algoritmo de ajuste lineal para ajustar el modelo a los datos.

Historial de versiones

Introducido antes de R2006a

expandir todo