在主 MEX 网关函数中准备输出数据
preparing output data in the main MEX gateway function
我正在使用 mex 编写一个包装函数,用于调用 C 函数。通常,我曾经使用
在主网关功能中创建输出矩阵
plhs[0] = mxCreateDoubleMatrix(r,c,mxREAL);
或
plhs[0] = mxCreateNumericArray(3, dim_array, mxDOUBLE_CLASS, mxREAL);
存储输出图像。现在我有一个 returns 只有长整数值而不是图像的函数。我如何处理这个输出?我需要为单值输出创建矩阵还是有其他功能?
这取决于你所说的 "long integer" 是什么意思。按照下面的 table 来 select 新创建的数组的类型 (mxClassID
) 以匹配所需的 MATLAB 和 C 类型。为了作弊,您可以使用 mxClassIDFromClassName
从 MATLAB 类型中获取 class id(例如 mxClassIDFromClassName('single')
到 select mxSINGLE_CLASS
)
如果您的意思是要创建一个标量,只需创建一个大小为 mxCreateNumericMatrix:
的 1×1 数组
mxCreateNumericMatrix(1, 1, mxClassIDFromClassName('int32'), mxREAL)
另请注意,有一个方便的函数可用于创建 double
标量,mxCreateDoubleScalar
:
mxArray *ps = mxCreateDoubleScalar(initialValue);
所有 mxCreate*
函数都列在 MathWorks 参考页上 Create or Delete Array。
我正在使用 mex 编写一个包装函数,用于调用 C 函数。通常,我曾经使用
在主网关功能中创建输出矩阵plhs[0] = mxCreateDoubleMatrix(r,c,mxREAL);
或
plhs[0] = mxCreateNumericArray(3, dim_array, mxDOUBLE_CLASS, mxREAL);
存储输出图像。现在我有一个 returns 只有长整数值而不是图像的函数。我如何处理这个输出?我需要为单值输出创建矩阵还是有其他功能?
这取决于你所说的 "long integer" 是什么意思。按照下面的 table 来 select 新创建的数组的类型 (mxClassID
) 以匹配所需的 MATLAB 和 C 类型。为了作弊,您可以使用 mxClassIDFromClassName
从 MATLAB 类型中获取 class id(例如 mxClassIDFromClassName('single')
到 select mxSINGLE_CLASS
)
如果您的意思是要创建一个标量,只需创建一个大小为 mxCreateNumericMatrix:
的 1×1 数组mxCreateNumericMatrix(1, 1, mxClassIDFromClassName('int32'), mxREAL)
另请注意,有一个方便的函数可用于创建 double
标量,mxCreateDoubleScalar
:
mxArray *ps = mxCreateDoubleScalar(initialValue);
所有 mxCreate*
函数都列在 MathWorks 参考页上 Create or Delete Array。