工具:MATLAB
警告:Equation is badly conditioned. Remove repeated data points or try centering and scaling.
出现这一警告的一般是因为数据在横坐标方向上跨度太大,在这种跨度很大的多项式拟合里,为了提高拟合精度,通常希望让横坐标变得更加集中,因为在一个相对狭窄的小区间上去拟合,要比在一个相对很宽的区间上拟合更容易,且能提高拟合精度。MATLAB推荐的做法是: centering and scaling transformation,即以横坐标的均值为中心、以横坐标的标准差来做归一化因子,将数据变得相对集中。
比如将这段代码:
x=1990:1:2008;
y=[34.1972 38.0773 42.3786 47.1423 52.4127 58.2367 64.6644 71.7483 79.5432 88.1057 97.4938 107.7658 118.9796 131.1914 144.4542 158.8166 174.3208 191.0005 208.8791];
n=2;
p=polyfit(x,y,n);
变成:
x=1990:1:2008;
y=[34.1972 38.0773 42.3786 47.1423 52.4127 58.2367 64.6644 71.7483 79.5432 88.1057 97.4938 107.7658 118.9796 131.1914 144.4542 158.8166 174.3208 191.0005 208.8791];
n=3;
mu = [mean(x); std(x)];