1樓:嚇棟棟
首先令p = x1,n = x2.i = y將問題化成一般式,即:
然後在matlab中用regress函式進行擬合,**如下:
clear
clcy = [0.255 0.28 0.
43 0.35 0.46 0.
48 0.29 0.4 0.
435 0.37 0.39 0.
54 0.61];
x1 = [0.1 0.1333 0.
15 0.2 0.2333 0.
3 0.3333 0.4 0.
4 0.4333 0.5 0.
5666 0.6];
x2 = [0 0.75 1 0 0.4286 1 0.3 0.75 0 0.2308 0.6 0.8823 1];
xx = [ones(13,1) x1' x2' (x1.*x2)'];
[b,bint,r,rint,stats] = regress(y',xx)
這裡b返回的就是各個擬合引數,擬合結果如下:
下面是驗證擬合結果的**(也可以從上面函式後幾個引數看出):
yy = 0.2719 + 0.2033*x1 + 0.0508*x2 + 0.2032*x1.*x2;
absr = abs(yy-y)./y*100;
stem(1:13,absr)
legend('資料點處誤差百分比')
figure
bar([y',yy'])
legend('原資料','擬合後資料')
結果如下:
效果還行,我就不用其他函式擬合了。事實上,不同的函式擬合結果略有差別。效果不好時可以換其他函式擬合試試。
2樓:匿名使用者
matlab 必須可以啊!
在matlab裡如何將下面兩組資料擬合成函式?是擬合成二次函式,三次函式,還是指數函式更準確?
3樓:匿名使用者
x=[510 512.5 515 517.5 520 522.
5 525 527.5 530 532.5 535 537.
5 540 542.5 545 547.5 550 552.
5 555 557.5 560];
y=[94.1582 94.2 94.
28 94.45 94.6565 94.
77 94.9 95.22 95.
5501 95.75 96.1 96.
3 96.5748 96.65 96.
75 96.83 96.9191 96.
75 96.6 96.1 95.
6500];
n=1;
p=polyfit(x,y,n);
r=sum(sqrt((y-polyval(p,x)).^2));
tf=1;
while(tf)
nnew=n+1;
pnew=polyfit(x,y,nnew);
rnew=sum(sqrt((y-polyval(pnew,x)).^2));
if rnew>=r
break;
endn=nnew;p=pnew;r=rnew;
endxx=linspace(min(x),max(x));
plot(x,y,'k.');hold on
plot(xx,polyval(p,xx),'r');
hold off;
title(['y=' poly2str(p,'x')]);
legend('資料','擬合曲線','location','northwest');
以上程式按用多項式擬合資料,並自動修改,尋找誤差最小的多項式
結果上看,5次多項式的擬合得到誤差最小
其實4次也已經不錯了,用6次的誤差反而增加
4樓:匿名使用者
二維擬合可以使用擬合工具箱進行擬合,cftool,擬合結果:
或直接使用命令polyfit進行擬合
如何用Excel做獎懲表,如何用Excel做乙個獎懲表
1 新建一張電子 在 中新增以下列,姓名 銷售目標 實際銷售 完成比列 獎 罰,把姓名 銷售目標 實際銷售三列填充完畢,如圖所示。2 把d列單元格格式,設定為百分比。選擇d3單元格,在單元格中輸入 c3 b3,回車,用填充手柄把下面的單元格填滿,完成比例就出來了。3 加入獎懲目標是這樣,如果實際大於...
如何用IF函式算工資,excel如何用if函式表示三種職業的基本工資
如果說工資在a列的話,你在b列寫函式.在b1中寫入 if a1 1000,0,if and a1 1000,a1 2000 a1 0.05,if and a1 2000,a1 3000 a1 0.1,if a1 3000,a1 0.2,你這裡面沒有說如果等於1000 2000 3000時怎麼算,如果...
請教excel上製作工資表如何用函式或者公式可以自動生成工資條
假設你的工資表在sheet1 在另一張表的a1輸入公式 if mod row 3 offset sheet1 a 1,mod row 1,3 0 round row 3,column a1 1 然後將a1公式向右複製 工資表有幾列就拖幾列 再把第一行的公式向下複製 excel工資條的做法 1.新建工...