【问题标题】:Is there a way to use MATLAB function handles in MEX files without the mexCallMATLAB function有没有办法在没有 mexCallMATLAB 函数的情况下在 MEX 文件中使用 MATLAB 函数句柄
【发布时间】:2012-03-21 02:31:21
【问题描述】:

我目前正在用 C 语言编写一个 MEX 文件,以加速严重依赖函数句柄的 MATLAB 代码。不幸的是,我的 MEX 文件运行速度比它应该运行的要慢,因为我必须使用 mexCallMATLAB 来评估 MATLAB 中的句柄(如 here 所述)。

大多数函数句柄都是简单的内联函数,它们采用统一的随机数并生成随机变量。一个典型的例子是:

f = @(u) exp(norminv(u)) 

即使函数句柄使用内置的 MATLAB 函数,我的代码也必须允许用户使用自己的函数句柄,这使我无法将函数硬编码到 MEX 文件中。

理想情况下,我想为 MEX 文件提供一种评估此函数句柄的方法,而不必每次都使用 mexCallMATLAB 函数。有谁知道如何做到这一点?我愿意接受您可能提出的任何建议。

【问题讨论】:

    标签: c matlab mex


    【解决方案1】:

    据我所知,这是唯一的方法。提高速度的一种方法是只调用一次 - 向它发送一个包含所需值的向量,然后在你的 mex 文件中使用返回的向量。

    【讨论】:

    • 嗯,我想到了这一点,但它不适用于这种确切的情况。您是否认为可以让 MATLAB 从函数句柄生成 C 代码并以某种方式在 MEX 文件中包含/引用这些代码?
    • 您可以通过 matlab 编译器来实现。我从未使用过它(不拥有它),但它似乎有助于满足您的需求 - mathworks.com/support/tech-notes/1600/1622.html
    猜你喜欢
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2016-01-10
    • 2016-01-19
    • 1970-01-01
    相关资源
    最近更新 更多