【问题标题】:preparing output data in the main MEX gateway function在主 MEX 网关功能中准备输出数据
【发布时间】:2023-04-01 01:47:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c matlab image-processing matrix mex


    【解决方案1】:

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

    如果您想创建一个标量,只需使用mxCreateNumericMatrix 创建一个大小为 1×1 的数组:

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

    另请注意,有一个方便的函数用于创建double 标量mxCreateDoubleScalar

    mxArray *ps = mxCreateDoubleScalar(initialValue);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-26
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      相关资源
      最近更新 更多