[問題]如何將polyfit改成有限制條件的fmincon 已回收
我總共有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
07/11 15:39, 1F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章