我正在尝试从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需要数字或逻辑矩阵”。
我做错了什么?
答案 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了,很容易解决......