我正在使用mex编写一个包装函数,用于调用C函数。通常,我曾经使用
在主网关功能中创建输出矩阵plhs[0] = mxCreateDoubleMatrix(r,c,mxREAL);
或
plhs[0] = mxCreateNumericArray(3, dim_array, mxDOUBLE_CLASS, mxREAL);
存储输出图像。现在我有一个只返回长整数值而不是图像的函数。我该如何处理这个输出?我是否需要为单个值输出创建矩阵或是否还有其他函数?
答案 0 :(得分:1)
这取决于你所说的“长整数”。按照下表选择新创建的数组的类型(mxClassID
)以匹配所需的MATLAB和C类型。为了作弊,您可以使用mxClassIDFromClassName
从MATLAB类型中获取类ID(例如mxClassIDFromClassName('single')
以选择mxSINGLE_CLASS
)
如果您的意思是创建标量,只需使用mxCreateNumericMatrix创建一个1 x 1的数组:
mxCreateNumericMatrix(1, 1, mxClassIDFromClassName('int32'), mxREAL)
另请注意,创建double
标量有一个便利功能,mxCreateDoubleScalar
:
mxArray *ps = mxCreateDoubleScalar(initialValue);
所有mxCreate*
函数都列在MathWorks参考页面Create or Delete Array上。