-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmymaop.cpp
More file actions
59 lines (47 loc) · 1.33 KB
/
mymaop.cpp
File metadata and controls
59 lines (47 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <WINDOWS.H>
#include <stdio.h>
#include <math.h>
#include <malloc.h>
#include <mex.h>
#include <WINDOWS.H>
#include <stdio.h>
#include <math.h>
#include <malloc.h>
#define PI 3.1415926535897932384626433832795029
void mymaop(double *, double *, double *, int,int, int, int);
void mexFunction (int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[])
{
int dimx1,dimx2,numx,dimy;
double *rho, *x, *y;
dimx1 = mxGetM (prhs[0]);
numx = mxGetN (prhs[0]);
x = mxGetPr (prhs[0]);
dimx2 = mxGetM (prhs[1]);
dimy = mxGetN (prhs[1]);
rho = mxGetPr (prhs[1]);
plhs[0] = mxCreateDoubleMatrix(dimy, numx, mxREAL);
y = mxGetPr (plhs[0]);
mymaop(&x[0], &rho[0], &y[0], dimx1,dimx2, numx, dimy);
}
void mymaop(double *x, double *rho, double *y, int dimx1, int dimx2, int numx, int dimy)
{
double alpha;
double beta,temp;
int ii, jj, kk;
for(ii=0;ii<numx;ii++){
beta = 0.0;
for(kk=dimx2;kk<dimx1;kk++){
temp = *(x+ii*dimx1+kk)-2*(*(x+ii*dimx1+1))*sin(2*PI*(*(x+ii*dimx1+0))+(kk+1)*PI/dimx1);
beta += temp*temp;
}
for(jj=0;jj<dimy;jj++){
alpha = 0.0;
for (kk=0;kk<dimx2;kk++){
temp = *(x+ii*dimx1+kk)-*(rho+jj*dimx2+kk);
alpha += temp*temp;
}
alpha = sqrt(alpha);
y[ii*dimy+jj]=alpha+beta;
}
}
}