mirror of https://github.com/Askill/AP-SCE.git
-added 6.2.1 (trapz)
This commit is contained in:
parent
48c98cf6d2
commit
16c9390f36
|
|
@ -0,0 +1,51 @@
|
|||
#include "mex.h"
|
||||
#include "matrix.h"
|
||||
#include "stdlib.h"
|
||||
|
||||
|
||||
|
||||
void mexFunction(int nlhs, mxArray *plhs[], // Output
|
||||
int nrhs, const mxArray *prhs[]) // Input
|
||||
{
|
||||
char *func_Name;
|
||||
func_Name = mxArrayToString(prhs[0]);
|
||||
|
||||
double a = *mxGetPr(prhs[1]);
|
||||
double x1= *mxGetPr(prhs[2]);
|
||||
double precision = *mxGetPr(prhs[3]);
|
||||
double b = a + precision;
|
||||
double A=0;
|
||||
|
||||
|
||||
//trapz
|
||||
mxArray *func_Input[1];
|
||||
mxArray *func_Outputs[1];
|
||||
|
||||
for(; a < x1; a += precision, b += precision)
|
||||
{
|
||||
double yb,ya;
|
||||
|
||||
func_Input[0] = mxCreateDoubleScalar(a);
|
||||
mexCallMATLAB(1, func_Outputs , 1 , func_Input , func_Name);
|
||||
ya = *mxGetPr(func_Outputs[0]);
|
||||
|
||||
func_Input[0] = mxCreateDoubleScalar(b);
|
||||
mexCallMATLAB(1, func_Outputs , 1 , func_Input , func_Name);
|
||||
yb = *mxGetPr(func_Outputs[0]);
|
||||
|
||||
A += (b - a)*((yb + ya)/2);
|
||||
|
||||
}
|
||||
|
||||
// Output
|
||||
plhs[0] = mxCreateDoubleScalar(A);
|
||||
|
||||
//free allocated memory
|
||||
mxDestroyArray(func_Input[0]);
|
||||
mxDestroyArray(func_Outputs[0]);
|
||||
|
||||
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
% function accepts 1 string and 3 doubles
|
||||
% a621("function", interval_start, interval_end, precision)
|
||||
%
|
||||
% a621 implements trapz (integral)
|
||||
%
|
||||
%exp.: a621("sin",0,pi/2,0.000001)
|
||||
% ans = 1.0000
|
||||
Loading…
Reference in New Issue