主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

创建示例代码来调用导出函数

使用 MATLAB® Compiler SDK™,您可以生成和修改示例 MATLAB 文件,这些文件被编译为 C++、.NET、Java® 或 Python® 代码。生成的示例代码演示了如何在目标语言中调用 MATLAB 导出的函数。您可以使用示例来实现您自己的应用程序或者测试编译后的工件。

对于打包期间包含的每个 MATLAB 示例文件,都会在名为 samples 的文件夹中生成一个目标语言的示例应用程序。这些示例也包含在安装程序中。示例代码使用与相应 MATLAB 示例文件相同的输入和输出调用您导出的函数。

您可以选择在打包前不包含示例文件。如果您用目标语言编写自己的代码,则可以在 MATLAB 函数打包后将其移动到适当的目录中。

以下目标类型支持样本生成:

  • C++ 共享库

  • Java 包

  • .NET 程序集

  • Python 包

使用编译器创建示例文件

当您使用编译器 App 针对受支持的目标语言(如 Python 包编译器)时,您可以选择编写自己的示例 MATLAB 脚本,或通过示例文件创建功能生成脚本。

Samples section that says 'Add MATLAB files that demonstrate how to use the exported functions. These files will be used to generate sample driver files in the target language.' The two buttons are labeled 'Add existing sample' and 'Create new sample'.

要上传您已经编写的 MATLAB 脚本,请点击示例部分中的添加现有示例

要生成一个新的 MATLAB 样本文件,请点击创建新示例。这将打开一个 MATLAB 脚本供您编辑。

生成的示例脚本调用您的 MATLAB 函数,并将参量设置为零,您应根据函数的预期行为根据需要进行修改。打包后,生成的示例代码使用与示例 MATLAB 脚本中相同的参量调用您导出的函数。

小心

示例文件代码应不需要用户交互。如果 MATLAB 函数需要输入参量,您必须在函数调用中为参量提供特定值。

使用命令行包含示例文件

如果您已经创建了 MATLAB 示例文件,则可以使用 compiler.build 选项将其包含在支持目标的 'SampleGenerationFiles' 函数中。

例如,使用 compiler.build.dotNETAssembly 函数从示例文件 addmatrixSample1 生成示例 .NET 代码。

buildResults = compiler.build.dotNetAssembly('addmatrix.m',...
    'AssemblyName','libmatrix',...
    'SampleGenerationFiles','addmatrixSample1.m');

MATLAB 示例文件指南

MATLAB 示例脚本应根据需要设置数据值,以调用导出的函数并获得示例输出。如果您的 MATLAB 函数接受输入参量,则示例应该为这些参量设置特定的值。

例如,考虑将作为输入传递的两个矩阵相加的函数 addmatrix.m

function a = addmatrix(a1, a2)
a = a1 + a2;

示例文件 addmatrixSample1.m 使用指定的输入参量 input1input2 调用该函数。

input1 = [1 2 3; 4 5 6; 7 8 9];
input2 = [1 4 7; 2 5 8; 3 6 9];
addoutput = addmatrix(input1,input2);

打包完成后,生成的目标语言代码使用相同的输入并计算与示例 MATLAB 脚本相同的输出。

示例 MATLAB 文件必须遵循以下准则:

  • 示例文件必须是 MATLAB 脚本,而不是函数或导出的类。

  • 示例文件代码必须仅使用导出的函数。脚本中调用的任何用户定义函数都必须是顶级导出函数。

  • 每个导出的函数必须位于单独的示例文件中。

  • 对相同导出函数的每次调用都必须是一个单独的示例文件。

  • 示例文件代码应不需要用户交互。

  • 数据必须保存为局部变量,然后传递给示例文件代码中的导出函数。

  • 在此过程中会分析顶层函数的输入参数。输入参数不能是结构中的字段。

  • 导出函数的输出必须是 n 维数字、字符、逻辑、结构或元胞数组。

  • 示例脚本作为生成目标语言示例代码过程的一部分来执行。执行中的任何错误(例如,未定义的变量)都将阻止生成样本,尽管仍会生成构建目标。

针对目标语言的其他考虑因素如下:

  • C++ mwArray API - vararginvarargout 不受支持。

  • .NET - 不支持类型安全 API。

  • Python - 元胞数组和字符数组的大小必须为 1×N,并且结构体数组必须是标量。对数值或逻辑数组没有任何限制,除了它们必须是矩形,就像在 MATLAB 中一样。

另请参阅

| | | | | | |

主题