该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
matlab与vc混合编程中,定义2个矩阵输入输出。假使文件定义为r.c,用,mex -r.c编译之后,假使输入矩阵为a,b,可是执行s=r(a,b)却只能得到第一个outdata0的输出,如果我要得到outdata1的结果,应该怎么做呢?
代码如下:
#include "mex.h"
#define PI 3.1415926
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
double *indata1;
double *outdata1;
double *indata0;
double *outdata0;
int M0,N0,M1,N1;
int i,j;
indata0=mxGetPr(prhs[0]); //获得指向矩阵的指针
M0=mxGetM(prhs[0]); //获得矩阵的行数
N0=mxGetN(prhs[0]); //获得矩阵的列数
indata1=mxGetPr(prhs[1]); //获得指向矩阵的指针
M1=mxGetM(prhs[1]); //获得矩阵的行数
N1=mxGetN(prhs[1]); //获得矩阵的列数
plhs[0]=mxCreateDoubleMatrix(M0,N0,mxREAL);
plhs[1]=mxCreateDoubleMatrix(M1,N1,mxREAL);
outdata0=mxGetPr(plhs[0]);
outdata1=mxGetPr(plhs[1]);
for(i=0;i
{
for(j=0;j
outdata0[j*M0+i]=indata0[j*M0+i]*cos(30*PI/180)-sin(30*PI/180)*indata1[j*M1+i];
outdata1[j*M0+i]=indata0[j*M0+i]*sin(30*PI/180)+cos(30*PI/180)*indata1[j*M0+i];
}
}