作者ofox6072 (knife)
看板MATLAB
标题[问题] 使用mex回传array到matlab
时间Sat Aug 23 18:02:02 2014
我想要用mex做阵列相加再回传到matlab
程式如下
%%%这是matlab code
mex add.c;
b = {1.1,1.1}; c = {2.2,2.2};
a = add(b, c);
//这是 add.mex
#include "mex.h"
void mexFunction(int nlhs,mxArray *plhs[], int nrhs,const mxArray *prhs[])
{
double *a, *b, *c;
int i;
plhs[0] = mxCreateDoubleMatrix(1, 2, mxREAL);
a = mxGetPr(plhs[0]);
b = mxGetPr(prhs[0]);
c = mxGetPr(prhs[1]);
for(i=0;i<2;i++){
a[i]=b[i]+b[i];
}
}
以上我先把阵列大小写死,但是我没有得到正确的a值a={3.3,3.3},而是得到
a={1.669273906000000e-315,1.669273906000000e-315},请问我错在哪里
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.20.6
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/MATLAB/M.1408788124.A.FBF.html
1F:推 sunev: 大括孤? 08/23 18:08
2F:→ ofox6072: 什麽大括弧? 08/23 18:17
3F:→ celestialgod: 你的b跟c是cell... b = {1.1, 1.1}... 08/23 18:27
4F:→ celestialgod: 而且C的回圈写错,应该是a[i] = b[i] + c[i]; 08/23 18:28
5F:→ ofox6072: OK,但是我觉得应该是指标有问题 08/23 18:30
6F:→ ofox6072: 他给出的答案感觉像是记忆体位置 08/23 18:31
7F:→ ofox6072: 如过是a[i] = b[i] + b[i],也应该是a={2.2,2.2} 08/23 18:32
8F:→ ofox6072: 请问你说得的cell是什麽意思 08/23 18:34
9F:→ celestialgod: a={2.2, 2.2} 是assign a为cell,而非矩阵 08/23 20:34
10F:→ celestialgod: b = [1.1, 1.1]才是assign matrix 08/23 20:34
11F:→ ofox6072: 改成[ ]就可以了,感谢C大 08/23 21:00
12F:→ ofox6072: 那如果要cell用mex相加回传到matlab,有什麽想法吗 08/23 21:02
13F:→ celestialgod: doc mexGetCell看范例吧 08/24 06:25
14F:→ celestialgod: create则看mxCreateCellArray 08/24 06:25