使用mexSet通过MEX文件访问CData

时间:2014-08-08 15:14:55

标签: matlab mex cdata

我正在尝试从MEX文件(C语言)中绘制数据。为了快速完成这项工作,我想使用与以下Matlab代码相对应的内容:

figure; imagehandle = imagesc(rand(500));
new_CData = rand(500);
set(newCData,imagehandle);

为此,命令mexSet()应该正常工作。理想情况下,我想要这样的东西

mex plotX.c
figure; imagehandle = imagesc(rand(500)); 
A = rand(500);
plotX(A,imagehandle)

使用mex-Function plotX。这是我的试用版:

#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    double *x, imagehandle;

    (void) plhs;
    x = mxGetPr(prhs[0]);

    imagehandle = mxGetScalar(prhs[1]);
    mexSet(imagehandle,"Cdata",x);
}

这可以编译,但我收到以下错误:“使用plotX时出错。图像CData需要数字或逻辑矩阵”。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

解决方案:

#include "mex.h"
 void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
 {
    double *x, imagehandle;
    (void) plhs;
    imagehandle = mxGetScalar(prhs[1]);
    mexSet(imagehandle,"Cdata",prhs[0]);
 }

当我使用不同的编译器时,我发现了这一点,它给了我以下错误:"注意:预期'struct mxArray *'但参数类型为'double *'"。并且prhs []已经是mxArray了,很容易解决......