mex_ex7_1a.c

来自「科学运算语言matlab的程序设计有关的函数code.rar」· C语言 代码 · 共 29 行

C
29
字号
#include "mex.h"
void mat_multiply(double *A, double *B, double *C,
   int mA, int nA, int mB, int nB)
{
   int i,j,k,m=0;
   for (i=0; i<mA; i++){
      for (j=0; j<nB; j++){
         C[j*mA+i]=0;
         for (k=0; k<mB; k++){
            C[j*mA+i]+=A[k*mA+i]*B[j*mB+k];
      }}}
}
/* Main interface to MATLAB */
void mexFunction( int nlhs, mxArray *plhs[],
                  int nrhs, const mxArray *prhs[])
{
   double *Ap, *Bp, *Cp;
   int mA,nA,mB,nB,mC,nC;
   if (nrhs!=2) mexErrMsgTxt("Wrong number of input arguments!");
   if (nlhs>1) mexErrMsgTxt("Too many output arguments!");
   Ap=mxGetPr(prhs[0]); Bp=mxGetPr(prhs[1]); 
   mA=mxGetM(prhs[0]); nA=mxGetN(prhs[0]); 
   mB=mxGetM(prhs[1]); nB=mxGetN(prhs[1]);
   if (nA!=mB) mexErrMsgTxt("Matrix dimensions not competible!");
   plhs[0]=mxCreateDoubleMatrix(mA,nB,mxREAL); 
   Cp=mxGetPr(plhs[0]);
   mat_multiply(Ap, Bp, Cp, mA, nA, mB, nB);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?