Description |
POLYFIT3(X,Y,N,NUL,W) 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. Any of the coefficients can be forced to be zero, and data can be weighted.
NUL is a vector with coefficients forced to be zero in usual order.
W is a vector containing the weights of data.
POLYFIT3(X,Y,N,NUL) assumes that all weights of data are equal to 1.
POLYFIT3(X,Y,N,[],W) allows to weight data without forcing any coefficient to be zero.
The original usage is still available.
Tested under MATLAB 6.0.0.
DEMO (for not weighted data).
x=linspace(0,11,12);
noise=(rand(size(x))-0.5);
y=3-x.^3+2*x.^5+noise;
[p1,S] = polyfit3(x,y,5)
w=ones(size(x));
[p2,S] = polyfit3(x,y,5,[2 4 5],w)
close all;
figure;
plot(x,y,'.r'); hold on;
x=linspace(0,11);
plot(x,polyval(p1,x),'b');
plot(x,polyval(p2,x),'k');
DEMO (For weighted data).
x=linspace(-5,5,11);
noise=(rand(size(x))-0.5);
y=x.^4+noise; y(11)=y(11)+100;
[p1,S] = polyfit3(x,y,4)
w=ones(size(x)); w(11)=0.1;
[p2,S] = polyfit3(x,y,4,[2 3 4 5],w)
close all;
figure;
plot(x,y,'.r'); hold on;
x=linspace(-5,5,11);
plot(x,polyval(p1,x),'b');
plot(x,polyval(p2,x),'k'); |