[問題]如何將polyfit改成有限制條件的fmincon 已回收

看板MATLAB作者 (peace)時間15年前 (2011/07/10 20:17), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
我總共有61組,每組9筆的資料(Xi,Yi),i=1~9,要用二次多項式擬和找出最佳曲線,得到 y=ax^2+bx+c中的a,b,c(亦即總共會有61條二次曲線),之前是利用polyfit去找到三個係數 ,其中a皆為正(y與x物理意義上呈現平方關係),但大部分結果b或是c會出現負值(b>0,c<0; b<0,c>0),不符合物理意義(a,b,c皆要>0). 前幾個禮拜有PO文問過相關問題,有板友建議 可用fmincon限制三個係數皆大於零去找出a,b,c. 由於本身的程式能力慘不忍睹,之前的 polyfit花了三個月才寫出能跑出結果的code,現在對於要修改程fmincon完全一籌莫展,想 請教大家是否能幫我看看,我該如何從原本的程式碼作修改.以下是我的原始碼: % 讀入檔案 % 檔案格式為:第一列為 V,第二列為 E。第三~五列中,第一行為長度,第二行開始為 資料 % 以 xlsread 讀取 .xls 檔案 存為矩陣 raw raw = xlsread('TsC fitting.xls'); % Fitting Rectangular % 創造陣列 P 做 Fitting % 將 P 的 Fitting 結果分別存取為:A 存 2次項係數,B 存 1次項係數,C 存 常數項 qq=size(raw); n=qq(1,2); P = NaN(3,n); for i=2:n P(:,i) = polyfit(raw(3:11,1),raw(3:11,i),2); end A=P(1,:); B=P(2,:); C=P(3,:); 另外想請問的是,利用fmincon去擬和出來的曲線是不是表示誤差就會比polyfit來的大? 感謝大家!!如果問題能夠順利解決,必定好好報答大家! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.4.186

07/11 15:39, , 1F
有試過nonlinear least squares嗎?
07/11 15:39, 1F
文章代碼(AID): #1E6PXCD3 (MATLAB)
文章代碼(AID): #1E6PXCD3 (MATLAB)