6593
|
1 #include "mex.h" |
|
2 |
|
3 void |
|
4 mexFunction (int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) |
|
5 { |
6686
|
6 mwIndex i; |
|
7 mwSize n; |
6593
|
8 double *vri, *vro; |
|
9 |
|
10 if (nrhs != 1 || ! mxIsNumeric (prhs[0])) |
|
11 mexErrMsgTxt ("expects matrix"); |
|
12 |
|
13 n = mxGetNumberOfElements (prhs[0]); |
|
14 plhs[0] = (mxArray *) mxCreateNumericArray |
|
15 (mxGetNumberOfDimensions (prhs[0]), |
|
16 mxGetDimensions (prhs[0]), mxGetClassID (prhs[0]), |
|
17 mxIsComplex (prhs[0])); |
|
18 vri = mxGetPr (prhs[0]); |
|
19 vro = mxGetPr (plhs[0]); |
|
20 |
|
21 if (mxIsComplex (prhs[0])) |
|
22 { |
|
23 double *vii, *vio; |
|
24 vii = mxGetPi (prhs[0]); |
|
25 vio = mxGetPi (plhs[0]); |
|
26 |
|
27 for (i = 0; i < n; i++) |
|
28 { |
|
29 vro [i] = vri [i] * vri [i] - vii [i] * vii [i]; |
|
30 vio [i] = 2 * vri [i] * vii [i]; |
|
31 } |
|
32 } |
|
33 else |
|
34 { |
|
35 for (i = 0; i < n; i++) |
|
36 vro [i] = vri [i] * vri [i]; |
|
37 } |
|
38 } |