准备主MEX网关功能

时间:2015-11-08 16:39:59

标签: c matlab image-processing matrix mex

我正在使用mex编写一个包装函数,用于调用C函数。通常,我曾经使用

在主网关功能中创建输出矩阵
plhs[0] = mxCreateDoubleMatrix(r,c,mxREAL);

plhs[0] = mxCreateNumericArray(3, dim_array, mxDOUBLE_CLASS, mxREAL);

存储输出图像。现在我有一个只返回长整数值而不是图像的函数。我该如何处理这个输出?我是否需要为单个值输出创建矩阵或是否还有其他函数?

1 个答案:

答案 0 :(得分:1)

这取决于你所说的“长整数”。按照下表选择新创建的数组的类型(mxClassID)以匹配所需的MATLAB和C类型。为了作弊,您可以使用mxClassIDFromClassName从MATLAB类型中获取类ID(例如mxClassIDFromClassName('single')以选择mxSINGLE_CLASS

enter image description here

如果您的意思是创建标量,只需使用mxCreateNumericMatrix创建一个1 x 1的数组:

mxCreateNumericMatrix(1, 1, mxClassIDFromClassName('int32'), mxREAL)

另请注意,创建double标量有一个便利功能,mxCreateDoubleScalar

mxArray *ps = mxCreateDoubleScalar(initialValue);

所有mxCreate*函数都列在MathWorks参考页面Create or Delete Array上。