?? polyfit.m
字號:
function [p,S] = polyfit(x,y,n)
%p=polyfit(x,y,k)用k次多項式擬合向量數(shù)據(jù)(x,y)
%p返回多項式的降冪系數(shù).當k>=n-1時,polyfit實現(xiàn)多項式插值.
%例如 用二次多項式擬合數(shù)據(jù)
% x | 0.1 0.2 0.15 0.0 -0.2 0.3
% --|------------------------------
% y | 0.95 0.84 0.86 1.06 1.50 0.72
% 求解
% x=[0.1,0.2,0.15,0,-0.2,0.3];
% y=[0.95,0.84,0.86,1.06,1.50,0.72];
% p=polyfit(x,y,2)
% xi=-0.2:0.01:0.3;
% yi=polyval(p,xi);
% plot(x,y,'o',xi,yi,'k');
% title('polyfit');
%POLYFIT Fit polynomial to data.
% POLYFIT(X,Y,N) finds the coefficients of a polynomial P(X) of
% degree N that fits the data, P(X(I))~=Y(I), in a least-squares sense.
%
% [P,S] = POLYFIT(X,Y,N) returns the polynomial coefficients P and a
% structure S for use with POLYVAL to obtain error estimates on
% predictions. If the errors in the data, Y, are independent normal
% with constant variance, POLYVAL will produce error bounds which
% contain at least 50% of the predictions.
%
% The structure S contains the Cholesky factor of the Vandermonde
% matrix (R), the degrees of freedom (df), and the norm of the
% residuals (normr) as fields.
%
% See also POLY, POLYVAL, ROOTS.
% J.N. Little 4-21-85, 8-23-86; CBM, 12-27-91 BAJ, 5-7-93.
% Copyright (c) 1984-98 by The MathWorks, Inc.
% $Revision: 5.9 $ $Date: 1997/11/21 23:40:57 $
% The regression problem is formulated in matrix format as:
%
% y = V*p or
%
% 3 2
% y = [x x x 1] [p3
% p2
% p1
% p0]
%
% where the vector p contains the coefficients to be found. For a
% 7th order polynomial, matrix V would be:
%
% V = [x.^7 x.^6 x.^5 x.^4 x.^3 x.^2 x ones(size(x))];
if ~isequal(size(x),size(y))
error('X and Y vectors must be the same size.')
end
x = x(:);
y = y(:);
% Construct Vandermonde matrix.
V(:,n+1) = ones(length(x),1);
for j = n:-1:1
V(:,j) = x.*V(:,j+1);
end
% Solve least squares problem, and save the Cholesky factor.
[Q,R] = qr(V,0);
p = R\(Q'*y); % Same as p = V\y;
r = y - V*p;
p = p.'; % Polynomial coefficients are row vectors by convention.
% S is a structure containing three elements: the Cholesky factor of the
% Vandermonde matrix, the degrees of freedom and the norm of the residuals.
S.R = R;
S.df = length(y) - (n+1);
S.normr = norm(r);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -