Re: [討論] fitting

看板MATLAB作者時間13年前 (2012/09/22 22:31), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《a0952028698 (泰勞)》之銘言: : 版上的各位高手大家好 : 小弟在處理磁滯效應的時候遇到了一些問題 : 簡單來說假如我現在有兩組data : 我在輸入電壓時1~20v : 因為磁滯效應所以可能兩次得到的結果會不一樣 : 就像是同樣我輸入x=1:20 : 卻得到兩組 : 比如說第一次y1=1:20和第二次卻得到y2=11:20這樣 : 那我想要以一個f(x)=ax^2+bx+c : 來表達得到這兩組data的一個較好的回歸曲線 : fit出a b和c : 乍看之下因為同1個x卻得到兩個y : 這違反了函數的基本定義 : 搞得我不知道從何下手polyfit 以及linsquare好像都不太能 : 不知道該怎麼辦 : 於是上來請教各位 : 謝謝大家 我不是Matlab使用者,我使用的是Scilab, 所以我不清楚Matlab提供的polyfit與linsquare這兩個擬合函式的使用方法 不過,曲線擬合的原理是共通的,大致分為兩種 (以下是我的印象,供參考) direct fitting & indirect fitting 從你的文章來看,使用的是indirect fitting, 也就是求 min(sum((Y_i - y_i)^2))) Y_i 是數據點,y_i是擬合曲線的值 我進一步推測,你遇到的問題受限於內建涵式本身的功能不合用 換言之,內建涵式是用來擬合"一組"數據點,但是你要擬合的數據點為多組 以下有兩個建議方向 1.仔細閱讀Matlab手冊,或許polyfit與linsquare能擬合多組數據 2.自己寫,或者套用最佳化演算法,求min(sum((Y_i - y_i)^2))) 因為擬合多組數據與一組數據,差異僅在於(Y_i-y_i)的數量不同而已 (後續以delta_Y表示) 若卡在內建涵式無法最小化多組數據的delta_Y,只好自己兜出一套求解器拉 如果你有Matlab最佳化演算法工具箱,如遺傳演算法,可以朝此方向下手 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 221.169.218.131

09/27 10:59, , 1F
已經解決。感謝您
09/27 10:59, 1F
文章代碼(AID): #1GNSlS5u (MATLAB)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
3
3
1
1
文章代碼(AID): #1GNSlS5u (MATLAB)