Initialize parameters by parameter initialization code in FDF file.
bool ParamsInitValues(bool bRunParamInit = true, DWORD dwInitCtrl = 0, int nFunc = -1)
return ture if set function successfully.
EX1
#include <..\originlab\NLFitSession.h> void NLFitSession_ParamsInitValues_ex() { Worksheet wks = Project.ActiveLayer(); if( !wks ) return; XYRange dr; dr.Add(wks, 0, "X"); dr.Add(wks, 1, "Y"); dr.Add(); dr.Add(wks, 0, "X"); dr.Add(wks, 2, "Y"); vector vX1, vY1, vX2, vY2; dr.GetData(vY1, vX1, NULL, 0); dr.GetData(vY2, vX2, NULL, 1); int nNumDataset = dr.GetNumData(DRR_GET_DEPENDENT); NLFitSession FitSession; if( !FitSession.SetFunction("Gauss")) // set function as Gauss, category name can be ignore { out_str("invalid fit function"); return; } // set first dataset if( !FitSession.SetData(vY1, vX1, NULL, 0, nNumDataset)) { out_str("fail to set data"); return; } // set second dataset if( !FitSession.SetData(vY2, vX2, NULL, 1, nNumDataset)) { out_str("fail to set data"); return; } if( !FitSession.ParamsInitValues()) { out_str("fail to initialize parameters"); return; } out_str("Parameter initialized successfully!"); // get parameter values after initialization vector vParamValues; vector<int> vnParamsOffsets; // the begin index of one group of parameters, normally one group for one dataset FitSession.GetParamValuesAndOffsets(vParamValues, vnParamsOffsets); // output parameter values with names vector<string> vsParamNames; FitSession.GetParamNamesInFunction(vsParamNames); for(int nDataset = 0; nDataset < nNumDataset; nDataset++) { printf("---The parameters of data %d---\n", nDataset+1); for( int nParam = vnParamsOffsets[nDataset], ii = 0; nParam < vnParamsOffsets[nDataset+1]; nParam++, ii++ ) { printf("%s = %f\n", vsParamNames[ii], vParamValues[nParam]); } } }
Originlab\NLFitSession.h