Main Content

Modelos personalizados

Modelos personalizados frente a modelos de la biblioteca

Si la biblioteca de Curve Fitting Toolbox™ no contiene la ecuación paramétrica que busca, puede crear una ecuación personalizada. Sin embargo, los modelos de la biblioteca son mejores para una convergencia rápida. Esto se debe a que:

  • Para la mayoría de los modelos de la biblioteca, la toolbox calcula los puntos de partida del coeficiente óptimos predeterminados. Para los modelos personalizados, la toolbox selecciona puntos de partida predeterminados al azar en el intervalo [0,1]. Para los modelos personalizados, debe identificar puntos de partida apropiados.

  • Los modelos de la biblioteca utilizan jacobianos analíticos. Los modelos personalizados utilizan diferenciación finita.

Ajuste lineal y no lineal

Puede crear ecuaciones generales personalizadas con el tipo de ajuste Ecuación personalizada. Los modelos generales son combinaciones no lineales de términos (quizás no lineales). Vienen definidos por ecuaciones que pueden ser no lineales en los parámetros. El ajuste de ecuaciones personalizadas utiliza el procedimiento de ajuste por mínimos cuadrados no lineales.

Puede definir una ecuación lineal personalizada con el tipo de ajuste Ecuación personalizada, aunque el ajuste no lineal es menos eficaz y suele ser más lento que el ajuste por mínimos cuadrados lineales.

  • Si no sabe si su ecuación se puede expresar como un conjunto de funciones lineales, elija Custom Equation. Puede que tenga que buscar puntos de partida apropiados.

  • Si necesita el ajuste por mínimos cuadrados lineales para las ecuaciones personalizadas, elija el tipo de modelo Linear Fitting. Consulte Custom Linear Fitting.

Seleccionar un ajuste de Ecuación personalizada de forma interactiva

En la app Curve Fitter, en la pestaña Curve Fitter, en la sección Fit Type, haga clic en la flecha para abrir la galería. En la galería de ajustes, haga clic en Custom Equation dentro del grupo Custom.

En el panel Fit Options, utilice el ajuste de ecuación personalizada para definir sus propias ecuaciones. Al hacer clic en Custom Equation, aparece una ecuación personalizada de ejemplo, como se muestra aquí para datos de curva.

Default custom equation for a curve fit

Si cuenta con datos de superficie, la ecuación personalizada de ejemplo utiliza x e y.

Default custom equation for a surface fit

  1. Puede modificar x, y y z con cualquier nombre de variable válido.

  2. En el cuadro inferior, modifique el ejemplo para definir su ecuación personalizada. Puede indicar cualquier expresión de MATLAB® válida para los nombres de variables que elija. Puede especificar un nombre de script o de función (consulte Ajustar una curva definida por un archivo en la app Curve Fitter).

  3. Haga clic en Advanced Options si desea especificar puntos de partida o límites. De forma predeterminada, los puntos de partida se seleccionan al azar en el intervalo [0,1] y son ilimitados. Puede que tenga que buscar puntos de partida y límites apropiados. Para ver un ejemplo, consulte Custom Nonlinear ENSO Data Analysis.

    Si define opciones de ajuste y luego modifica otra configuración del ajuste, si es posible, la app recuerda los valores seleccionados para los límites superior e inferior y para los puntos de partida. Para las ecuaciones personalizadas, la app Curve Fitter siempre recuerda los valores del usuario. No obstante, con muchos modelos de biblioteca, si cambia la configuración de ajuste, entonces la app calcula automáticamente los nuevos mejores valores para los puntos de partida o los límites inferiores.

Puede guardar las ecuaciones personalizadas como parte de su sesión guardada de la app Curve Fitter.

Su función se puede ejecutar un número de veces, tanto durante el ajuste como durante el preprocesamiento antes del ajuste. Tenga en cuenta que puede que esto lleve cierto tiempo si está utilizando funciones con efectos colaterales como escribir datos en un archivo o mostrar información de diagnóstico en la ventana de comandos.

Para obtener ejemplos, consulte:

Ajustar una curva definida por un archivo en la app Curve Fitter

Este ejemplo muestra cómo proporcionar un nombre de script o de función como modelo de ajuste en la app Curve Fitter. Defina una función en un archivo y utilícela para ajustar una curva.

  1. 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 en la ruta de MATLAB.

  2. Defina algunos datos y abra la app Curve Fitter.

    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];
    
    curveFitter
  3. En la app Curve Fitter, en la pestaña Curve Fitter, en la sección Data, haga clic en Select Data. En el cuadro de diálogo Select Fitting Data, seleccione x e y en las listas X data e Y data, respectivamente. Introduzca Piecewise Function como nombre del ajuste.

  4. Utilice su función piecewiseLine en la app Curve Fitter. En la pestaña Curve Fitter, en la sección Fit Type, haga clic en la flecha para abrir la galería. En la galería de ajustes, haga clic en Custom Equation dentro del grupo Custom. En el panel Fit Options, indique la expresión de su función en el cuadro de texto de la ecuación personalizada. La función toma los datos de x y algunos parámetros para el ajuste.

    piecewiseLine(x,a,b,c,d,k)

    La app Curve Fitter crea un ajuste con su función.

Custom equation using piecewise line function

Sugerencia

Si quiere utilizar la misma función de ajuste en la línea de comandos, utilice la misma expresión como entrada para fittype, y luego utilice el fittype como entrada para fit:

ft = fittype("piecewiseLine(x,a,b,c,d,k)");
f = fit(x,y,ft)
Para obtener más ejemplos, consulte la función fit.

Seleccionar un ajuste de ecuación personalizada desde la línea de comandos

Para ajustar modelos personalizados, puede:

  • Proporcionar un modelo personalizado para la función fit en el argumento de entrada fitType. Puede utilizar una expresión de MATLAB (incluido cualquier archivo .m), un arreglo de celdas o un arreglo de cadenas de términos de modelo lineal, o una función anónima.

  • Crear un objeto fittype con la función fittype y utilizarlo como argumento de entrada para la función fit.

Este ejemplo carga algunos datos y utiliza una ecuación personalizada que define un modelo de Weibull como entrada para la función fit:

time = [ 0.1;  0.1;  0.3;  0.3;  1.3;  1.7;  2.1;  2.6;  3.9;  3.9; ...
         5.1;  5.6;  6.2;  6.4;  7.7;  8.1;  8.2;  8.9;  9.0;  9.5; ...
         9.6; 10.2; 10.3; 10.8; 11.2; 11.2; 11.2; 11.7; 12.1; 12.3; ...
        12.3; 13.1; 13.2; 13.4; 13.7; 14.0; 14.3; 15.4; 16.1; 16.1; ...
        16.4; 16.4; 16.7; 16.7; 17.5; 17.6; 18.1; 18.5; 19.3; 19.7;];
conc = [0.01; 0.08; 0.13; 0.16; 0.55; 0.90; 1.11; 1.62; 1.79; 1.59; ...
        1.83; 1.68; 2.09; 2.17; 2.66; 2.08; 2.26; 1.65; 1.70; 2.39; ...
        2.08; 2.02; 1.65; 1.96; 1.91; 1.30; 1.62; 1.57; 1.32; 1.56; ...
        1.36; 1.05; 1.29; 1.32; 1.20; 1.10; 0.88; 0.63; 0.69; 0.69; ...
        0.49; 0.53; 0.42; 0.48; 0.41; 0.27; 0.36; 0.33; 0.17; 0.20;];

f = fit(time,conc,"c*a*b*x^(b-1)*exp(-a*x^b)","StartPoint",[0.01 2 5])
plot(f,time,conc)

Para definir un modelo personalizado con fittype, utilice la forma:

f = fittype(expr)
que construye un objeto fittype de modelo personalizado para la expresión de MATLAB contenida en el vector de caracteres, el escalar de cadena, el arreglo de celdas, el arreglo de cadenas o la función anónima expr.

Consulte la página de referencia de fittype para obtener detalles sobre:

  • Especificar variables dependientes e independientes, parámetros de problema y coeficientes con fittype.

  • Especificar un arreglo de celdas o un arreglo de cadenas de términos para utilizar un algoritmo de ajuste lineal para la ecuación personalizada. Si expr es una cadena o una función anónima, la toolbox utiliza un algoritmo de ajuste no lineal.

    Para obtener más detalles sobre el ajuste lineal, consulte Selecting Linear Fitting at the Command Line.

  • Ejemplos de modelos personalizados lineales y no lineales.

Para ver un ejemplo paso a paso, consulte Ajuste personalizado no lineal del censo.