2.1.17.2.5.1 Curve_integrate
Description
Integrate the given Curve.
Syntax
BOOL Curve_integrate( curvebase * pcrvData, IntegrationResult * pirResult, curvebase * pcrvBaseline = NULL, Dataset * pdsIntegral = NULL, BOOL bPaintShade = FALSE )
Parameters
- pcrvData
- [input] Pointer to Curve to integrate
- pirResult
- [output] Pointer to the IntegrationResult structure (see OC_types.h)
- pcrvBaseline
- [input] Pointer to baseline Curve
- pdsIntegral
- [output] Pointer to Dataset holding cumulative integration result
- bPaintShade
- [input] TRUE shades area of graph between integrated Curve and X axis (or baseline)
Return
Returns TRUE if integration is successful and FALSE otherwise. Also returns a pointer to an IntegrationResult structure (see OC_types.h) and a pointer to dataset holding the cumulative integration result.
Examples
EX1
// This is a self contained sample program for the function Curve_integrate,
// Its sample data is created at the beginning of the program.
// To run the program, enter the following command in the Script window:
// Curve_integrate_ex1
// It returns like the following three lines:
// Integration of Data2_B with Base:BaseLine
// Area = 1.09865
// Peak from Base = (6.000000, 0.345290)
void Curve_integrate_ex1()
{
Worksheet wks;
wks.Create();
wks.AddCol("BaseLine"); // Add a column for base line
wks.AddCol("Cumulation"); // Add a column for cumulation result
Dataset dsInXDs(wks, 0);
Dataset dsInYDs(wks, 1);
Dataset dsBaseDs(wks, 2); // Base line dataset
Dataset dsOutCumDs(wks, 3); // Cumulative integration result
//******* Create sample data *****************
dsInXDs.SetSize(7);
dsInYDs.SetSize(7);
dsBaseDs.SetSize(7); // Baseline (=0.05*X)
dsOutCumDs.SetSize(7);
dsInXDs[0]=1; dsInYDs[0]=0.097; dsBaseDs[0]=0.05;
dsInXDs[1]=2; dsInYDs[1]=0.41256; dsBaseDs[1]=0.1;
dsInXDs[2]=3; dsInYDs[2]=0.24909; dsBaseDs[2]=0.15;
dsInXDs[3]=4; dsInYDs[3]=0.47304; dsBaseDs[3]=0.2;
dsInXDs[4]=5; dsInYDs[4]=0.2476; dsBaseDs[4]=0.25;
dsInXDs[5]=6; dsInYDs[5]=0.64529; dsBaseDs[5]=0.3;
dsInXDs[6]=7; dsInYDs[6]=0.44514; dsBaseDs[6]=0.35;
//******** End of Sample Data Creation *******
Column colInY, colBase;
string wksName = wks.GetPage().GetName();
colInY.Attach(wks, 1);
string strColNameInY = colInY.GetName();
colBase.Attach(wks, 2);
string strColNameBase = colBase.GetName();
Curve crvInput(wks, 0, 1); // Create Curve object of input data
Curve crvBase(wks, 0, 2); // Create Curve object of baseline data
IntegrationResult stResults; // Origin C structure to store integration results
int nRet = Curve_integrate(&crvInput, &stResults, &crvBase, &dsOutCumDs, TRUE); // Perform integration
if(nRet)
printf("Integration of %s_%s with Base:%s\n Area = %g\n Peak from Base = (%f, %f)\n",
wksName, strColNameInY, strColNameBase, stResults.Area, stResults.xPeak, stResults.yPeak);
else
printf("Integration Failed. Error Code=%d\n", nRet);
}
bool fitpoly_range_ex1(Curve& crv)
{
int nBegin = 5;
int nEnd = 20;
if( nBegin >= crv.GetSize() && nEnd >= crv.GetSize() )
return error_report("nBegin and nEnd too large, please update ");
int nPolyOrder = 2;
vector vCoeff(nPolyOrder+1);
bool bRet = fitpoly_range(crv, nBegin, nEnd, nPolyOrder, vCoeff);
if( !bRet )
return error_report("fitpoly_range return false");
for(int ii=0; ii < vCoeff.GetSize(); ii++)
printf("%g\n", vCoeff[ii]);
return true;
}
Remark
Integrate the given Curve relative to the X axis unless a baseline is specified.
See Also
Header to Include
origin.h
Reference
|