视频
拓展学习
#include "mex.h"
bool isCoprime(double *inx,double *outy)
{
int x=*inx,y=*outy,tmp;
if (x<y)
{tmp=x; x=y; y=tmp;}
tmp=x%y;
while (tmp)
{
x=y; y=tmp; tmp=x%y;
}
if (y==1) //最大公约数为1,所以互质
return true;
else //最大公约数大于1,所以不互质
return false;
}
void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] )
{
double *result;
int m,n,i;
//检查调用时输入、输出是否符合要求
if(nrhs!=2) {
mexErrMsgTxt("输入参数应有两个!"); return; }
if(nlhs!=1) {
mexErrMsgTxt("输出参数应只有1个!"); return; }
for(i=0;i<2;i++){
m = int(mxGetM(prhs[i]));
n = int(mxGetN(prhs[i]));
if( !mxIsDouble(prhs[i]) || m!=1 || n!=1) {
mexErrMsgTxt("输入参数必须是单个的数!"); return; }
}
//在MATLAB工作区建立一个矩阵,用于存放计算结果,
//矩阵的大小与输入实参的大小相同。
plhs[0] = mxCreateDoubleMatrix(m,n, mxREAL);
result = mxGetPr(plhs[0]);
if (isCoprime(mxGetPr(prhs[0]),mxGetPr(prhs[1])))
*result=1;
else
*result=0;
}

