matlab混合编程 mex,求教:matlab混合编程关于mex内自定义函数的输出

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

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];

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值