使用 MATLAB 引擎在生成的代码中执行函数调用

在 MATLAB® 代码中处理对函数foo的调用时,代码生成器会找到foo的定义并为其函数体生成代码。在某些情况下,您可能希望绕过代码生成,而是使用 MATLAB 引擎来执行调用。使用声明对foo的调用不生成代码,而是使用 MATLAB 引擎执行。在此上下文中,foo称为外部函数。在执行期间,仅当 MATLAB 引擎可用时,此功能才可用。这种情况的示例包括 MEX 函数的执行、Simulink® 仿真或代码生成时的函数调用(也称为编译时)。如果为调用foo并包含。
摘要由CSDN通过智能技术生成

在 MATLAB® 代码中处理对函数 foo 的调用时,代码生成器会找到 foo 的定义并为其函数体生成代码。在某些情况下,您可能希望绕过代码生成,而是使用 MATLAB 引擎来执行调用。使用 coder.extrinsic('foo') 声明对 foo 的调用不生成代码,而是使用 MATLAB 引擎执行。在此上下文中,foo 称为外部函数。在执行期间,仅当 MATLAB 引擎可用时,此功能才可用。这种情况的示例包括 MEX 函数的执行、Simulink® 仿真或代码生成时的函数调用(也称为编译时)。

如果为调用 foo 并包含 coder.extrinsic('foo') 的函数生成独立代码,代码生成器将尝试确定 foo 是否影响输出。如果 foo 不影响输出,则代码生成器继续生成代码,但会从生成的代码中排除 foo。否则,代码生成器会产生编译错误。

将 coder.extrinsic('foo') 指令包含在某特定 MATLAB 函数中会将该 MATLAB 函数中对 foo 的所有调用都声明为外部调用。或者,您可能希望将外部声明的范围缩小到仅对 foo 的一次调用。请参阅使用 feval 调用 MATLAB 函数

将函数声明为外部函数的情形

以下是您可能会考虑将 MATLAB 函数声明为外部函数的一些常见情况:

  • 函数执行显示或记录操作。此类函数主要在仿真期间有用,在嵌入式系统中不使用。

  • 在您的 MEX 执行或 Simulink 仿真中,您要使用代码生成不支持的 MATLAB 函数。此工作流不适用于非仿真目标。

  • 您使用 coder.const 指示代码生成器对函数调用进行常量折叠。在这种情况下,仅当 MATLAB 引擎可用于执行调用时,才会在代码生成期间调用该函数。

使用 coder.extrinsic 构造

要将函数 foo 声明为外部函数,请在您的 MATLAB 代码中包含以下语句。

coder.extrinsic('foo')

当将函数声明为代码生成的外部函数时,请遵守以下规则:

  • 在调用函数之前将其声明为外部函数。

  • 不要在条件语句中使用外部声明。

  • 将外部函数的返回值赋给已知类型。请参阅

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值