[問題] 使用mex回傳array到matlab

作者: ofox6072 (knife)   2014-08-23 18:02:02
我想要用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},請問我錯在哪裡
感謝
作者: sunev (Veritas)   2014-08-23 18:08:00
大括孤?
作者: ofox6072 (knife)   2014-08-23 18:17:00
什麼大括弧?
作者: celestialgod (天)   2014-08-23 18:27:00
你的b跟c是cell... b = {1.1, 1.1}...而且C的迴圈寫錯,應該是a[i] = b[i] + c[i];
作者: ofox6072 (knife)   2014-08-23 18:30:00
OK,但是我覺得應該是指標有問題他給出的答案感覺像是記憶體位置如過是a[i] = b[i] + b[i],也應該是a={2.2,2.2}請問你說得的cell是什麼意思
作者: celestialgod (天)   2014-08-23 20:34:00
a={2.2, 2.2} 是assign a為cell,而非矩陣b = [1.1, 1.1]才是assign matrix
作者: ofox6072 (knife)   2014-08-23 21:00:00
改成[ ]就可以了,感謝C大那如果要cell用mex相加回傳到matlab,有什麼想法嗎
作者: celestialgod (天)   2014-08-24 06:25:00
doc mexGetCell看範例吧create則看mxCreateCellArray

Links booklink

Contact Us: admin [ a t ] ucptt.com