Red de conocimiento informático - Aprendizaje de código fuente - es el código fuente de qrmu

es el código fuente de qrmu

función [p, S, mu] = polyfit(x, y, n)

%POLYFIT datos de ajuste polinomial.

% P = POLYFIT(X, Y, N) encuentra los coeficientes del polinomio P(X)

% grado N que mejor se ajusta a los datos Y en el sentido de mínimos cuadrados. p es un

% vector de fila de longitud N+1, que contiene los coeficientes polinomiales en

% de potencia decreciente, p(1)*x^n+p(2)* x ^(n-1)+...+ P(N)*X + P(N+1).

%

% [P, S] = POLYFIT(X, Y, N) da coeficientes polinomiales P y una

% estructura S junto con POLYVAL Uso para obtener una estimación del error

% del pronóstico. s contiene los campos de los factores trigonométricos de QR (R), el % de descomposición de la matriz de Vandermond de X, los grados de libertad (gl) y la norma de los residuos (normr). Si los datos Y son aleatorios,

% La estimación de la matriz de covarianza de p es (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 en

% XHAT = ( X -MU(1))/MU(2)donde MU(1) = MEDIA(X), MU(2) = STD(X). Este

% de transformaciones de centrado y escala mejora las propiedades numéricas

% de los algoritmos polinómicos y de ajuste.

%

Produce un mensaje de advertencia % si N > = longitud(X), si X es un duplicado, o

% es casi un duplicado, punto , o X Si se requiere centrar y escalar.

%

La clase % para las entradas X e Y admite:

Porcentaje flotante: precisión doble, precisión simple

%

%Ver POLY, POLYVAL, ROOTS, LSCOV.

%Copyright 1984-2008 The MathWorks, Inc.

% $Revisión: 5.17 4 .

El problema de regresión % se formula en formato matricial como:

%

% y = V*p o

%

% 3 2

% y = [x x x 1] [p3

% p2

% p1

% p0]

%

%El vector p contiene el coeficiente a encontrar. Para un

% polinomio de séptimo orden, la matriz V será:

%

% V = [x.^7 x.^6 x.^ 5 x.^4 x.^3 x.^2 x(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(:);

if nargout & gt2

mu =[mean(x);STD(x)];

p>

x =(x-mu(1))/mu(2);

End

% Construye la matriz de Vandermond.

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', 'todo'); \(Q ' * y); % igual que p = V\y;

advertencia(ws);

if tamaño(R, 2) > tamaño(R, 1)

WARNING('MATLAB:polyfit:PolyNotUnique',...

El polinomio no es único; grado>=número de puntos de datos.)

else if warniflagconditionnumber(R)

if nargout & gt2

warn(' MATLAB:polyfit:RepeatedPoints',...

['La condición del polinomio es deficiente. Agregar Puntos con diferentes :RepeatedPointsOrRescale ',...

['La condición del polinomio es mala\n '...

Valor, baje el grado del polinomio o intente centrarlo. n '...

y escalar como se describe en AYUDA POLYFIT ]);

Fin

Fin

r = y-V *. p;

p = p '; %Los coeficientes polinómicos son vectores fila por convención.

%S es una estructura que contiene tres elementos: la descomposición % QR de la

matriz de Vandermond, los grados de libertad y la

normal norma del residual .

Sur R = R

S.df = max(0, longitud(y)-(n+1));

s. (r);

Función flag = warniflagconditionnumber(R)

if isa(R,' double ')

flag =(contest(R)>1e +10);

Otros

flag =(contest(R)>1e+05);

Fin