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