首页 > 解决方案 > 矩阵乘法与 Mex 文件

问题描述

我在使用 Matlab 中的 mex 文件与 C 相乘时遇到问题。我正在编译下一个代码,但是当我调用该函数时,Matlab 崩溃:

#include "mex.h"

void Multipl(double **a, double **b, double **res, mwSize n)
{
 mwSize i;
 mwSize j;
 mwSize k;

 for (i=0; i<n; i++) {
    for (j=0; j<n; j++){
        res[i][j]=0;
        for(k=0;k<n;k++){
            res[i][j]+=a[i][k]*b[k][j];;
        }
    }
   }
  }
void mexFunction( int nlhs, mxArray *plhs[],
              int nrhs, const mxArray *prhs[])
{
size_t ncols;                   /* size of matrix */
mxArray *mx, *my;
double *pr, *qr;
int *sr;
mx = mxCreateDoubleMatrix(2,3,mxREAL);
pr = mxGetPr(mx); // pointer to first double element of mx
qr = (double *)mxGetData(mx); // pointer to first double element of mx
my = mxCreateNumericMatrix(2,3,mxINT32_CLASS,mxREAL);
sr = (int *)mxGetData(my); // pointer to first int element of my
ncols = mxGetN(prhs[1]);
plhs[0] = mxCreateDoubleMatrix(1,(mwSize)ncols,mxREAL);
int* outMatrix         = (int *)mxGetData(plhs[0]);
/* call the computational routine */
Multipl(mx,my,outMatrix,(mwSize)ncols);

}

我应该在这段代码中改变什么?

任何帮助表示赞赏。

标签: cmatlabmex

解决方案


推荐阅读