From 16c9390f3635ec18a5b31eed056fae6b9c705bbd Mon Sep 17 00:00:00 2001 From: Patrice Matz Date: Sat, 6 Jan 2018 17:51:42 +0100 Subject: [PATCH] -added 6.2.1 (trapz) --- Mex/a621.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ Mex/a621.m | 7 +++++++ 2 files changed, 58 insertions(+) create mode 100644 Mex/a621.cpp create mode 100644 Mex/a621.m diff --git a/Mex/a621.cpp b/Mex/a621.cpp new file mode 100644 index 0000000..2ab8ba9 --- /dev/null +++ b/Mex/a621.cpp @@ -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; +} \ No newline at end of file diff --git a/Mex/a621.m b/Mex/a621.m new file mode 100644 index 0000000..38bdec9 --- /dev/null +++ b/Mex/a621.m @@ -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 \ No newline at end of file