-
大小: 11KB文件類型: .zip金幣: 2下載: 0 次發布日期: 2021-06-15
- 語言: Matlab
- 標簽: BFGS??Optimization??curve??fitting??
資源簡介
自己編寫的BFGS 優化算法,以及用于曲線擬合的范例,測試通過,結果和matlab非常近似。簡單易用。

代碼片段和文件信息
/*
@?author:?luchang?li?luchangli1993@163.com
@?huazhong?university?of?science?and?technology
@?2017/12/07
@?free?use?for?research
*/
#include?“CurveFitting.h“
/*
exp?fitting?
y=a*exp(b*x)
FitPara=[ab]
*/
void?ExpFit_PreFitting(float?*FitPara?float?*ix?float?*iy?int?DataNum)
{
FitPara[0]?=?iy[0];
FitPara[1]?=?logf(iy[1]?/?iy[0]);
}
float?ExpFit_TargerF(float?*FitPara?float?*ix?float?*iy?int?DataNum)
{
float?a?=?FitPara[0];
float?b?=?FitPara[1];
float?y0;
int?cnt?=?0;
float?SquareError?=?0;
for?(cnt?=?0;?cnt? {
y0?=?a*expf(b*ix[cnt]);
SquareError?+=?powf(y0?-?iy[cnt]?2);
}
return?SquareError;
}
/*
Gaussian?Fitting?1?0
Y=a*exp(-(x-x0)^2/(2*sigma^2))
FitPara=[Ax0sigma]
*/
void?GausFit10_PreFitting(float?*FitPara?float?*ix?float?*iy?int?DataNum)
{
float?mdat?=?iy[0];
float?mpos?=?0;
int?cnt?=?0;
for?(cnt?=?0;?cnt? {
if?(mdat? {
mdat?=?iy[cnt];
mpos?=?cnt;
}
}
FitPara[0]?=?mdat;
FitPara[1]?=?mpos;
FitPara[2]?=?mpos?/?2.5f;
}
float?GausFit10_TargerF(float?*FitPara?float?*ix?float?*iy?int?DataNum)
{
float?a?=?FitPara[0];
float?x0?=?FitPara[1];
float?sigma?=?FitPara[2];
float?y0;
int?cnt?=?0;
float?SquareError?=?0;
for?(cnt?=?0;?cnt? {
y0?=?a*expf(-(ix[cnt]?-?x0)*(ix[cnt]?-?x0)?/?(2?*?sigma*sigma));
SquareError?+=?powf(y0?-?iy[cnt]?2);
}
return?SquareError;
}
/*
Gaussian?Fitting?1?1
Y=a*exp(-(x-x0)^2/(2*sigma^2))+b
FitPara=[Ax0sigmab]
*/
void?GausFit11_PreFitting(float?*FitPara?float?*ix?float?*iy?int?DataNum)
{
float?mdat?=?iy[0];
float?mpos?=?0;
int?cnt?=?0;
for?(cnt?=?0;?cnt? {
if?(mdat? {
mdat?=?iy[cnt];
mpos?=?cnt;
}
}
float?b?=?Min(iy[0]?iy[DataNum?-?1]);
FitPara[0]?=?mdat?-?b;
FitPara[1]?=?mpos;
FitPara[2]?=?mpos?/?2.5f;
FitPara[3]?=?b;
}
float?GausFit11_TargerF(float?*FitPara?float?*ix?float?*iy?int?DataNum)
{
float?a?=?FitPara[0];
float?x0?=?FitPara[1];
float?sigma?=?FitPara[2];
float?b?=?FitPara[3];
float?y0;
int?cnt?=?0;
float?SquareError?=?0;
for?(cnt?=?0;?cnt? {
y0?=?a*expf(-(ix[cnt]?-?x0)*(ix[cnt]?-?x0)?/?(2?*?sigma*sigma))?+?b;
SquareError?+=?powf(y0?-?iy[cnt]?2);
}
return?SquareError;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-12-07?20:40??BFGS?Optimization?curve?fitting?優化曲線擬合v1.0\
?????目錄???????????0??2017-12-07?20:40??BFGS?Optimization?curve?fitting?優化曲線擬合v1.0\BFGSOptimizer\
?????文件???????11761??2017-12-07?20:39??BFGS?Optimization?curve?fitting?優化曲線擬合v1.0\BFGSOptimizer\BFGSOptimizer.h
?????文件????????4256??2017-12-07?19:16??BFGS?Optimization?curve?fitting?優化曲線擬合v1.0\BFGSOptimizer\BFGSOptimizer.vcxproj
?????文件????????1289??2017-12-07?19:16??BFGS?Optimization?curve?fitting?優化曲線擬合v1.0\BFGSOptimizer\BFGSOptimizer.vcxproj.filters
?????文件????????2448??2017-12-07?20:46??BFGS?Optimization?curve?fitting?優化曲線擬合v1.0\BFGSOptimizer\CurveFitting.cpp
?????文件????????1117??2017-12-07?20:25??BFGS?Optimization?curve?fitting?優化曲線擬合v1.0\BFGSOptimizer\CurveFitting.h
?????文件????????1338??2017-12-07?20:36??BFGS?Optimization?curve?fitting?優化曲線擬合v1.0\BFGSOptimizer\main.cpp
?????文件?????????985??2017-12-07?10:52??BFGS?Optimization?curve?fitting?優化曲線擬合v1.0\BFGSOptimizer.sln
?????文件???????23552??2017-12-07?20:40??BFGS?Optimization?curve?fitting?優化曲線擬合v1.0\BFGSOptimizer.v12.suo
評論
共有 條評論