mex_mattrans.c

来自「本人收集的一些有关matlab的代码程序设计 也不知道改选什么分类」· C语言 代码 · 共 24 行

C
24
字号
   #include "matrix.h"
   /*Function mex_mattrans*/
   void mexFunction( int nlhs, mxArray *plhs[],
                     int nrhs, const mxArray *prhs[])
   {
      double *Ap, *Bp;
      int mA,nA, m_total, n_elements, *ndims, n, *n1, i, j, k;
      if (nrhs!=1) mexErrMsgTxt("Wrong number of input arguments!");
      if (nlhs>1) mexErrMsgTxt("Too many output arguments!");
      n_elements=mxGetNumberOfElements(prhs[0])+1;
      n=mxGetNumberOfDimensions(prhs[0]); 
      ndims=mxGetDimensions(prhs[0]); 
      Ap=mxGetPr(prhs[0]);
      n1=mxCalloc(n,sizeof(int));
      mA=ndims[0]; nA=ndims[1]; n1[0]=nA; n1[1]=mA;
      for (j=2; j<n; j++) n1[j]=ndims[j];
      plhs[0]=mxCreateNumericArray(n, n1, mxDOUBLE_CLASS, mxREAL);
      Bp=mxGetPr(plhs[0]);
      m_total=nA*mA;
      for (k=0; k<n_elements; k+=m_total)
         for (i=0; i<mA; i++) 
            for (j=0; j<nA; j++) Bp[k+i*nA+j]=Ap[k+j*mA+i];
   }

⌨️ 快捷键说明

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