文档

coder.getArgTypes

通过运行测试文件确定函数输入参数的类型

语法

types = code . getargtypes (test_fcn,fcn)
Structure_of_types =编码器。getArgTypes (test_fcn {fcn_1,…,fcn_n})
structure_of_types = code . getargtypes (test_fcn,fcn,'uniform',true)

描述

类型= coder.getArgTypes (test_fcnfcn的单元格数组编码器。类型由执行确定的对象test_fcntest_fcn应该调用指定的入口点MATLAB®函数,fcn.软件使用输入参数来fcn构造返回的类型。

structure_of_types= coder.getArgTypes (test_fcn, {fcn_1,…,fcn_n})返回包含单元格数组的结构编码器。类型由执行确定的对象test_fcntest_fcn调用指定的入口点函数,fcn_1通过fcn_n.软件使用这些函数的输入参数来构造返回的类型。返回的结构为每个函数包含一个字段。字段名与对应函数的名称相同。

structure_of_types= coder.getArgTypes (test_fcnfcn“制服”,真的)即使只有一个入口点函数,也返回一个结构。

输入参数

fcn

要确定其输入类型的入口点MATLAB函数的名称或句柄。函数必须在MATLAB路径上;它不能是一个局部函数。函数必须在可写文件夹中。

fcn_1,…,fcn_n

要确定输入类型的入口点MATLAB函数的名称或句柄的逗号分隔列表。函数必须在MATLAB路径上;它们不能是局部函数。函数必须在可写文件夹中。入口点函数名必须唯一。

test_fcn

测试函数的名称或句柄或测试脚本的名称。测试函数或脚本必须在MATLAB路径下。test_fcn应该调用至少一个指定的入口点函数。软件使用这些函数的输入参数来构造返回的类型。

输出参数

类型

单元格阵列编码器。类型由执行测试函数确定的对象。

structure_of_types

的单元格数组编码器。类型方法确定的对象test_fcn.该结构为每个函数包含一个字段。字段名与对应函数的名称相同。

例子

全部折叠

获取函数的输入参数类型my_fun通过运行测试文件my_test调用my_fun.使用这些输入类型生成代码my_fun

在本地可写文件夹中,创建MATLAB函数。

函数Y = my_fun(u,v)% # codegenY = u+v;结束

在同一文件夹中,创建test函数。

函数Y = my_test a = single(10);B =单(20);Y = my_fun(a,b);结束

运行test函数以获取的输入类型my_fun

types = code . getargtypes (“my_test”“my_fun”
类型= [1x1编码器。PrimitiveType][1x1 coder.PrimitiveType]

生成的MEX函数my_fun使用这些输入类型作为示例输入。

代码原my_fun -args类型

在当前文件夹中,codegen生成一个MEX函数,my_fun_mex,它接受类型的输入

现在可以测试MEX函数了。例如:

Y = my_fun_mex(single(11),single(22))

获取函数的输入参数类型my_fun1而且my_fun2通过运行测试文件my_test2调用my_fun1而且my_fun2.使用这些输入类型生成代码my_fun1而且my_fun2

在本地可写文件夹中,创建MATLAB函数,my_fun1

函数Y = my_fun1(u)% # codegenY = u;

在同一文件夹中,创建函数,my_fun2

函数Y = my_fun2(u, v)% # codegenY = u + v;

在同一文件夹中,创建test函数。

函数[y1, y2] = my_test2 a = 10;B = 20;Y1 = my_fun1(a);Y2 = my_fun2(a,b);结束

运行test函数以获取的输入类型my_fun1而且my_fun2

types = code . getargtypes (“my_test2”, {“my_fun1”“my_fun2”})
类型= my_fun1: {[1x1编码器。PrimitiveType]}my_fun2: {[1x1 coder.PrimitiveType] [1x1 coder.PrimitiveType]}

生成的MEX函数my_fun1而且my_fun2使用这些输入类型作为示例输入。

代码原my_fun1 -args类型。my_fun1my_fun2arg游戏类型.my_fun2

在当前文件夹中,codegen生成一个MEX函数,my_fun1_mex,有两个入口,my_fun1而且my_fun2,它们接受类型的输入

现在可以测试MEX函数中的每个入口点。例如:

Y1 = my_fun1_mex(“my_fun1”,10) y2 = my_fun1_mex(“my_fun2”, 15日,25)

提示

  • 使用前coder.getArgTypes,在MATLAB中运行测试函数,验证其提供了预期的结果。

  • 验证测试函数使用适合您的运行时环境的输入数据类型调用指定的入口点函数。如果test函数没有调用指定的函数,coder.getArgTypes无法确定此函数的输入类型。

  • coder.getArgTypes可能无法为应用程序计算理想的类型。例如,您可能希望大小为无界。coder.getArgTypes根据它看到的最大输入返回一个边界。使用coder.resize调整返回类型的大小。

  • 对于某些输入的组合,coder.getArgTypes不能产生有效的类型。例如,如果test函数用单输入调用入口点函数,然后用双输入调用它,coder.getArgTypes生成错误,因为没有一个类型可以表示两个调用。

  • 方法生成MATLAB函数的代码时,将返回的类型作为示例输入codegen使用arg游戏选择。

在R2012a中引入

这个话题有用吗?