¡Es urgente encontrar el código fuente de la función payfit en matlab! Parece que mi caja de herramientas de Matlab (versión 2007b) está incompleta y no hay ninguna función Polyfit ~.
POLYFIT ajusta un polinomio a los datos.
P = POLYFIT(X, Y, N) encuentra el coeficiente del polinomio P(X) de grado N que mejor se ajusta a los datos Y en el sentido de mínimos cuadrados. P es un vector fila de longitud N 1
, que contiene coeficientes polinomiales que disminuyen según la potencia de los datos
, P(1)*X^N P(2)*X ^(norte -1) ... P(norte)*X P(norte 1).
[P, S] = POLYFIT(X, Y, N) devuelve los coeficientes polinomiales P y una
estructura S para usar con POLYVAL, Obtener
la estimación del error del pronóstico. S contiene campos para los factores triangulares (R), grados de libertad (df) y norma residual (normr) de la descomposición QR de la matriz de Vandermonde de X. Si los datos Y son aleatorios,
El valor estimado de la matriz de covarianza de P es (Rinv*Rinv')*normr^2/df,
donde Rinv es el recíproco de R
[Rinv*Rinv')*normr^2/df,
donde Rinv es el recíproco de R.
[P, S, MU] = POLYFIT(X, Y, N) encuentra los coeficientes del polinomio
XHAT = (X-MU(1))/MU(2 ) donde MU(1) = MEDIA(X), MU(2) = STD(X). Esta
transformación de centrado y escala mejora las propiedades numéricas
de los algoritmos polinómicos y de ajuste. p>
Si N es gt; = length(X), aparecerá una advertencia si X tiene puntos duplicados o
casi duplicados, o si es posible que sea necesario centrar y escalar X. información.
Las entradas X e Y admitidas por la clase son:
Número de coma flotante: doble, simple
Ver POLI, POLIVAL, RAÍCES, LSCOV. > Copyright 1984-2008 The MathWorks, Inc.
$Revisión: 5.17.4.10 $ $Fecha: 2008/06/20 08:00:56 $
Problema de regresión en formato matricial Expresado de la siguiente manera:
y = V*p o
3 2
y = [ x x x 1] [p3
p2
p1
p0]
donde el vector p contiene el coeficiente. Para un polinomio
de orden 7, la matriz V será:
V = [x.^7 x.^6 x.^5 x .^ 4 x.^3 x. ^2 x unos(tamaño(x))];
if ~isequal(tamaño(x), tamaño(y))
error (' MATLAB:polyfit:XYSizeMismatch',...
'Los vectores X e Y deben tener el mismo tamaño.
')
fin
x = x(:);
y = y(:);
mu = [media(x); estándar(x)];
x = (x - mu(1))/mu(2); >fin
Construya la matriz de Vandermonde.
V(:, n 1) = unos(longitud(x), 1, clase(x)
para j = n:-1:1
V(:,j) = x.*V(:,j 1);
fin
Resuelve el problema de mínimos cuadrados.
[Q, R] = qr(V, 0);
ws = advertencia('apagado', 'todos'); \( Q'*y); Igual que p = V\y;
advertencia(ws
if tamaño(R, 2) gt;
advertencia('MATLAB: polyfit: PolyNotUnique', ...
'El polinomio no es único; grado >= número de puntos de datos.')
elseif warnIfLargeConditionNumber(R)
if nargout gt; 2
advertencia('MATLAB: polyfit: RepeatedPoints', ...
['El polinomio está mal condicionado. Sumar con puntos con diferente poliajuste: RepeatedPointsOrRescale', ...
['El polinomio está mal condicionado. Agregue puntos con diferentes valores de X\n', reduzca el grado del polinomio o intente centrar/n'...
' y escale como se describe en AYUDA POLYFIT.']);
end
end p>
r = y - V*p ;
p = p.'; Los coeficientes polinómicos son por convención vectores fila.
S es una estructura de tres elementos: Norma de factores triangulares, grados de libertad y residuos de Vandermonde. Descomposición QR de matriz de coeficientes
función flag = warnIfLargeConditionNumber(R)
if isa(R, 'double')
flag = (condest(R) gt ; 1e 10);
else
bandera = (condest(R) gt; 1e 05
fin
);