看板 MATLAB 關於我們 聯絡資訊
※ 引述《leoking0106 (white)》之銘言: : 現在我有一組xdata和一組ydata : 我想要用回歸的方式求出下式 : ydata=(1/(1+(a*xdata)^b))^((b-1)/b) : 的a和b : 因為不是多項是沒辦法用polyfit : 寫矩陣也沒辦法完全提出a和b做左除法 : 拜託版上的高手給我一點想法或告訴我甚麼指令可以做 : 感激不盡~ 我剛剛試了一下lsqcurvefit 這是我寫的code clear all clc x=[3.01;6.0154;19.558;27.392;39.999;49.565;60;80;100] y=[0.6967;0.689367;0.649;0.59923;0.45573;0.313833;0.17363;0.068367;0.0403] f=@(a,x)1./(1+(a(1).*x).^a(2)).^((a(2)-1)/a(2)); b=lsqcurvefit(f,[1,0.1],x,y) 我想請問一下我[1,0.1]那邊只要改變數字算出來的係數就會差很多 想請問一下各位高手為什麼會這樣 還有以我這個例子的x,y數字大小這邊應該設多少比較恰當呢? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.25.108
doom8199:因為 lsqcurvefit 它是 iterative method, 本就無法確保 11/28 19:39
doom8199:cost function 是否會收斂 11/28 19:40
doom8199:若想讓 [a,b] 估計結果較 smooth, 可以對 LSE 再加上 11/28 19:46
doom8199:regularization term 11/28 19:47
doom8199:ex: sigma[f(xi)-yi]^2 + |a|^2 + |b|^2 11/28 19:47
doom8199:或者先對 yi 數據取 log 再做 optimization 11/28 19:49
leoking0106:雖然不知道之後還會不會出錯 11/29 16:32
leoking0106:目前能順利回歸了感謝各位建議 11/29 16:33