fittype
Tipo de ajuste para curvas y superficies
Sintaxis
Descripción
crea el objeto aFittype
= fittype(libraryModelName
)fittype
aFittype
para el modelo especificado por libraryModelName
.
crea un tipo de ajuste para el modelo especificado por la expresión de MATLAB®.aFittype
= fittype(expression
)
construye el tipo de ajuste con opciones adicionales especificadas por uno o más argumentos de par aFittype
= fittype(expression
,Name,Value
)Name,Value
.
crea un tipo de ajuste para un modelo lineal personalizado con términos especificados por las expresiones en aFittype
= fittype(linearModelTerms
)linearModelTerms
.
construye el tipo de ajuste con opciones adicionales especificadas por uno o más argumentos de par aFittype
= fittype(linearModelTerms
,Name,Value
)Name,Value
.
crea un tipo de ajuste para el modelo especificado por aFittype
= fittype(anonymousFunction
)anonymousFunction
.
construye el tipo de ajuste con opciones adicionales especificadas por uno o más argumentos de par aFittype
= fittype(anonymousFunction
,Name,Value
)Name,Value
.
Ejemplos
Crear tipos de ajuste para modelos de biblioteca
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
.
Crear un modelo no lineal personalizado
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)
La gráfica muestra que el ajuste sigue los datos.
Crear un modelo lineal personalizado
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
Ajustar una curva definida por un archivo
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 )
Crear tipos de ajuste con funciones anónimas
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' );
Utilizar una función anónima para pasar datos del área de trabajo al ajuste
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'
Utilizar funciones anónimas para trabajar con parámetros de problema y variables del área de trabajo
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
libraryModelName
— Modelo de biblioteca para el ajuste
vector de caracteres | escalar de cadena
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 |
---|---|
| Curva polinomial lineal |
| Superficie polinomial lineal |
| Curva polinomial cuadrática |
| Interpolación lineal por tramos |
| Interpolación cúbica por tramos |
| Spline de suavizado (curva) |
| 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
expression
— Modelo para el ajuste
vector de caracteres | escalar de cadena
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
linearModelTerms
— Modelo para el ajuste
arreglo de celdas de vectores de caracteres | arreglo de cadenas
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
anonymousFunction
— Modelo para el ajuste
función anónima
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
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'}
coefficients
— Nombres de coeficientes
vector de caracteres | escalar de cadena | arreglo de celdas de vectores de caracteres | arreglo de cadenas
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
dependent
— Nombre de variable (respuesta) dependiente
y
(predeterminado) | vector de caracteres | escalar de cadena
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
independent
— Nombres de variable (respuesta) independiente
x
(predeterminado) | vector de caracteres | escalar de cadena | arreglo de celdas de vectores de caracteres | arreglo de cadenas
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
options
— Opciones de ajuste
fitoptions
Opciones de ajuste, especificadas como el par separado por comas compuesto por 'options'
y el nombre de un objeto fitoptions
.
problem
— Nombres de parámetros dependientes de problemas (fijos)
vector de caracteres | escalar de cadena | arreglo de celdas o vectores de caracteres | arreglo de cadenas
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
aFittype
— Modelo para el ajuste
objeto fittype
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
Variables dependientes e independientes
¿Cómo decido qué variables son dependientes e independientes?
Para determinar las variables y coeficientes dependientes e independientes, tenga en cuenta esta ecuación:
.
y es el valor dependiente.
x es el valor independiente.
a, b y c son los coeficientes.
La variable 'independent'
es lo que usted controla. La variable 'dependent'
es lo que usted mide, es decir, depende de la variable independiente. Los 'coefficients'
son los parámetros que estima el algoritmo de ajuste.
Por ejemplo, si tiene datos de censo, entonces el año es la variable independiente porque no depende de nada. La población es la variable dependiente, porque su valor depende del año en el que se toma el censo. Si un parámetro como la tasa de crecimiento es parte del modelo, el algoritmo de ajuste la estima. De esta forma, el parámetro es uno de los 'coefficients'
.
La función fittype
determina argumentos de entrada buscando la entrada de la expresión del tipo de ajuste para nombres de variables. fittype
da por supuesto que x
es la variable independiente, y
es la variable dependiente, y el resto de variables son coeficientes del modelo. x
se utiliza si no existe variable alguna.
Orden de entrada para funciones anónimas
Si la entrada de la expresión de tipo de ajuste es una función anónima, entonces el orden de entradas debe ser correcto. El orden de entradas permite que la función fittype
determine qué entradas son coeficientes que estimar, parámetros dependientes de problemas y variables independientes.
El orden de los argumentos de entrada para la función anónima debe ser:
fcn = @(coefficients,problemparameters,x,y) expression
y
son opcionales. Los últimos argumentos, x
e y
, representan las variables independientes: solo x
para las curvas, pero x
e y
para superficies. Si no quiere utilizar x
o y
para nombrar las variables independientes, entonces especifique nombres distintos con el argumento de par nombre-valor 'independent'
. Sin embargo, cualquiera que sea el nombre o los nombres que elija, estos argumentos deben ser los últimos de la función anónima.Las funciones anónimas facilitan pasar otros datos a las funciones fittype
y fit
.
Cree un tipo de ajuste con una función anónima y un valor de la variable (
c
) del área de trabajo.c = 1; g = fittype( @(a, b, x) a*x.^2+b*x+c )
La función
fittype
puede utilizar los valores de las variables de su área de trabajo cuando crea un tipo de ajuste. Para pasar nuevos datos desde el área de trabajo, recree el tipo de ajuste como, por ejemplo:c = 5 % Change value of c. g = fittype( @(a, b, x) a*x.^2+b*x+c )
Aquí, el valor de
c
es fijo cuando crea el tipo de ajuste. Para especificar el valor dec
en el momento en el que llame afit
puede utilizar parámetros de problema. Por ejemplo, haga un ajuste conc = 2
y luego un nuevo ajuste conc = 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 )
Términos de modelo lineal
¿Cómo defino términos de modelo lineal?
Para utilizar un algoritmo de ajuste lineal, especifique linearModelTerms
como un arreglo de celdas o un arreglo de cadenas de términos. Por ejemplo:
afittype = fittype({expr1,...,exprn})
expr2,...,exprn
. No incluya coeficientes en las expresiones para los términos. Si hay un término constante, utilice '1'
como la expresión correspondiente en el arreglo de celdas.Para especificar un modelo lineal de la siguiente forma:
coeff1 * term1 + coeff2 * term2 + coeff3 * term3 + ...
term1
, term2
, etc., utilice un arreglo de celdas o un arreglo de cadenas en el que cada término, sin coeficientes, se especifique en una celda o elemento de expr
, de esta manera:LinearModelTerms = {'term1', 'term2', 'term3', ... }
Por ejemplo, el modelo
a*x + b*sin(x) + c
a
, b
y c
. Tiene tres términos x
, sin(x)
y 1
(porque c=c*1) y por lo tanto expr
es:LinearModelTerms = {'x','sin(x)','1'}
En la app Curve Fitter, seleccione un ajuste Linear Fitting del grupo Custom dentro de la sección Fit Type.
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 R2006aR2023b: Especificar los tipos de ajuste sigmoide y logarítmico
A partir de la versión R2023b, puede especificar los tipos de ajuste sigmoide y logarítmico para los ajustes de curva. Para obtener más información, consulte Lista de modelos de biblioteca para ajuste de curvas y de superficie.
Consulte también
Funciones
Apps
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)