【问题标题】:Use of mexSet to access CData via a MEX file使用 mexSet 通过 MEX 文件访问 CData
【发布时间】:2014-08-09 06:49:01
【问题描述】:

我正在尝试从 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 函数 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 需要数字或逻辑矩阵”。

我做错了什么?

【问题讨论】:

  • P.S.我想在 MEX 中绘制的原因是我将数据作为 lib.pointers,并且我不想在绘制之前将它们转换为 Matlab 矩阵,而是直接从它们的物理位置绘制它们。

标签: matlab mex cdata


【解决方案1】:

解决方案:

#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了,很容易解决……

【讨论】:

    猜你喜欢
    • 2012-02-25
    • 2019-09-15
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多