主要内容

墨西哥人文件升级到使用图形对象

MATLAB®版本8.4 (R2014b)变化的数据类型处理的图形对象对象

在8.4版本之前,墨西哥人文件使用C / c++和Fortran API参考库函数mexGetmexSet,它将输入句柄参数声明为类型。如果你的墨西哥人函数使用mexGetmexSet,MATLAB显示以下错误。

错误使用墨西哥人弃用墨西哥人函数mexGet | mexSet叫。要么更新源代码使用mxGetProperty | mxSetProperty,或重新运行墨西哥人-DMEX_DOUBLE_HANDLE添加到命令行输入兼容模式。

升级你的墨西哥人文件,考虑下列一个或多个操作。

取代mexGetmexSet功能

升级一个墨西哥人文件使用图形对象,调用替换mexGetmxGetProperty和调用mexSetmxSetProperty。以下程序清单显示源墨西哥人文件之前和之后的一个例子。

下面的代码使用mexCallMATLAB创建一个情节,它返回变量的图形处理plhs [0]。改变线的颜色,使用示例mxGetScalar将句柄,然后将其传递到mexGetmexSet

# include”墨西哥人。h" #define RED 0 #define GREEN 1 #define BLUE 2 void fill_array(double *x) { int i = 0; for(i = 0 ; i < 4 ; i++) { x[i] = i+1; } } void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { mxArray *color; int ret; double handle; mxArray *copycolor; double *acolor; mxArray *data = mxCreateDoubleMatrix(1,4,mxREAL); fill_array(mxGetPr(data)); ret = mexCallMATLAB(1,&plhs[0],1,&data,"plot"); if(!ret) {处理= mxGetScalar (plhs [0]);颜色= mexGet(处理,“颜色”);copycolor = mxDuplicateArray(颜色);acolor = mxGetPr (copycolor);acolor(红色)= (1 + acolor(红色))/ 2;acolor(绿色)= acolor(绿色)/ 2;acolor(蓝色)= acolor(蓝色)/ 2;mexSet(处理,“颜色”,copycolor);mxSetProperty (plhs[0] 0“颜色”,copycolor);}}

当您构建这个墨西哥人文件,MATLAB显示一条错误消息。

修改源文件,使下面的编辑。这段代码使用的变量plhs [0]mxGetProperty得到颜色直接的财产。没有必要创建一个中间处理变量。

# include”墨西哥人。h" #define RED 0 #define GREEN 1 #define BLUE 2 void fill_array(double *x) { int i = 0; for(i = 0 ; i < 4 ; i++) { x[i] = i+1; } } void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { mxArray *color; int ret; mxArray *copycolor; double *acolor; mxArray *data = mxCreateDoubleMatrix(1,4,mxREAL); fill_array(mxGetPr(data)); ret = mexCallMATLAB(1,&plhs[0],1,&data,"plot"); if(!ret) {颜色= mxGetProperty (plhs[0], 0,“颜色”);copycolor = mxDuplicateArray(颜色);acolor = mxGetPr (copycolor);acolor(红色)= (1 + acolor(红色))/ 2;acolor(绿色)= acolor(绿色)/ 2;acolor(蓝色)= acolor(蓝色)/ 2;mxSetProperty (plhs[0] 0“颜色”,copycolor);}}

建造这个墨西哥人文件,类型:

墨西哥人mymex.c
建筑的Microsoft Visual c++ 2012 (C)”。墨西哥人成功完成。

或者,您可以构建最初的源文件遵循的步骤我想重建墨西哥人源代码文件

墨西哥人自动转换处理类型

如果你的墨西哥人函数使用mexCallMATLABmexGetVariable函数来得到一个图形处理和通过句柄mexGetmexSetapi,然后自动检测到的行为和你的墨西哥人MATLAB函数继续执行正确。你知道墨西哥人函数使用这种模式如果函数执行没有错误。

如果你在MATLAB R2014b或重建这个墨西哥人文件之后,MATLAB显示一条错误消息。重建文件,按照说明取代mexGet和mexSet功能我想重建墨西哥人源代码文件

我想重建墨西哥人源代码文件

如果你重建你的墨西哥人在MATLAB R2014b源文件或之后,MATLAB显示一条错误消息。

您可以使用墨西哥人命令兼容性国旗,-DMEX_DOUBLE_HANDLE,建立处理图形对象的墨西哥人文件。如果墨西哥人函数调用一个函数,返回一个图形处理使用mexCallMATLABmexGetVariableMATLAB函数,自动检测和转换处理类型。建立源文件,mymex.c类型:

墨西哥人-DMEX_DOUBLE_HANDLEmymex.c

如果你通过图形处理一个墨西哥人函数,转换处理在调用函数之前。有关更多信息,请参见我没有墨西哥人源代码文件

我没有墨西哥人源代码文件

如果你得到一个运行时错误,你没有源代码,您可以使用以下方法。使用这个方法只对墨西哥人将图形句柄作为输入参数的函数。

在你通过墨西哥人的图形处理功能,首先将处理转换成双。例如,如果您调用墨西哥人函数mymex:

Y = 1:10;h =情节(Y);mymex (h)

然后添加声明转换处理h双:

Y = 1:10;h =情节(Y);h =双(h);mymex (h)

另请参阅

|

相关的话题