[C/C++ 演算法] 純C 曲線擬合[系統估測](最小平方估測法). Contribute to jash-git/CPP_polynomial_Least_Squares development by creating an account on GitHub. ... <看更多>
曲線擬合 演算法 在 MATLAB《進階篇》:10-曲線擬合與迴歸分析-nonlinear models 的推薦與評價

使用非線性模型來進行 曲線擬合 與迴歸分析MATLAB《進階篇》:10- 曲線擬合 與迴歸分析(SC-20171130)MATLAB程式設計《入門 ... ... <看更多>
曲線擬合 演算法 在 Re: [討論] fitting - 看板MATLAB - 批踢踢實業坊 的推薦與評價
※ 引述《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
... <看更多>