📄 main.cpp
字号:
#include "stdafx.h"
#include "mextest.h"
#include "MyDlg.h"
#include "math.h"
#include "mex.h"
#define MAXLEN 128
int xlen, ylen;
double *xptr, *yptr, *zptr;
CMyDlg dlg;
int operation;
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray*prhs[])
{
// mexPrintf("Hello World!\n");
// AfxMessageBox("Hello World!\n");
if (nrhs != 2)
mexErrMsgTxt("输入变量个数应为2\n");
if (!mxIsNumeric(prhs[0]))
mexErrMsgTxt("第1个输入变量应为double类型\n");
if (!mxIsNumeric(prhs[1]))
mexErrMsgTxt("第2个输入变量应为double类型\n");
xlen = mxGetN(prhs[0]);
if (xlen<1 || xlen>MAXLEN)
mexErrMsgTxt("第1个输入变量的长度应为1到128\n");
ylen = mxGetN(prhs[1]);
if (ylen<1 || ylen>MAXLEN)
mexErrMsgTxt("第2个输入变量的长度应为1到128\n");
if (xlen != ylen)
mexErrMsgTxt("两个输入变量的长度应该相等\n");
xptr = mxGetPr(prhs[0]);
yptr = mxGetPr(prhs[1]);
dlg.m_xlen = xlen;
dlg.m_ylen = ylen;
if (IDOK == dlg.DoModal())
{
operation = dlg.m_operation;
plhs[0] = mxCreateDoubleMatrix(1, xlen, mxREAL);
zptr = mxGetPr(plhs[0]);
for (int i=0; i<xlen; i++)
{
switch (operation)
{
case 0: zptr[i] = xptr[i] * log(yptr[i]); break;
case 1: zptr[i] = xptr[i] * exp(yptr[i]); break;
case 2: zptr[i] = xptr[i] + yptr[i]; break;
case 3: zptr[i] = xptr[i] * yptr[i]; break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -