MATLAB將離散點擬合成曲線的兩種方法:
1.使用spline函數。
x=[0 1 2 3 4 5 6 7 8 8.85]; y=[13 12.1 11 10.5 10.1 9.9 9.6 9.3 9.0 8.9]; xx=0:0.01:10; yy=spline(x,y,xx); plot(x,y,'o',xx,yy);
結果如下:
2. polyfit與polyval函數
[p,s]= polyfit(x,y,n)
說明:x,y為數據點,n為多項式階數,返回p為冪次從高到低的多項式系數向量p。x必須是單調的。矩陣s用於生成預測值的誤差估計。
多項式曲線求值函數:polyval( )
調用格式: y=polyval(p,x)
[y,DELTA]=polyval(p,x,s)
說明:y=polyval(p,x)為返回對應自變量x在給定系數P的多項式的值。
[y,DELTA]=polyval(p,x,s) 使用polyfit函數的選項輸出s得出誤差估計Y DELTA。它假設polyfit函數數據輸入的誤差是獨立正態的,並且方差為常數。則Y DELTA將至少包含50%的預測值。
clear; clf; %清除當前窗口 clc; t = 1900:10:2000; %時間t y = [76 92 106 123 132 151 179 203 227 250 281]; %人口y plot(t,y,'k*'); hold on; % figure; %重新開一個圖 p1 = polyfit(t,y,2); plot(t, polyval(p1, t)); axis([1900 2000 0 300]); %圖像xy軸范圍 disp(char(['y=',poly2str(p1,'t')],['a=',num2str(p1(1)),' b=',... num2str(p1(2)),' c=',num2str(p1(3))]));
結果:
y= 0.0094289 t^2 - 34.7482 t + 32061.5711 a=0.0094289 b=-34.7482 c=32061.5711
t=[0:54]; y=[1.4712 1.45327 1.44467 1.42513 1.41487 1.40393 1.382667 1.3706 1.35807 1.34513 1.33187 1.3186 1.3048 1.29107 1.27733 1.2637 1.25007 1.2366 1.2311 1.2179 1.2049 1.19226 1.17993 1.175 1.1631 1.15167 1.14727 1.13633 1.125733 1.12193 1.11187 1.108533 1.099 1.0898 1.08693 1.078267 1.0758 1.0676 1.06547 1.0591 1.05586 1.0486 1.04707 1.0402 1.03893 1.03253 1.03153 1.02553 1.0248 1.019267 1.0188 1.013733 1.0134 1.01367 1.0088]; plot(t,y,'o'); hold on p=polyfit(t,y,2) y1=polyval(p,t); plot(t,y1)
結果: