coder.getArgTypes

Определите типы аргументов входного параметра функции рабочим тестовым файлом

Синтаксис

типы = coder.getArgTypes (test_fcn, fcn)
structure_of_types = coder.getArgTypes (test_fcn, {fcn_1..., fcn_n})
structure_of_types = coder.getArgTypes (test_fcn, fcn, 'универсальный', верный)

Описание

types = coder.getArgTypes(test_fcn,fcn) возвращает массив ячеек объектов coder.Type, определенных путем выполнения test_fcn. test_fcn должен вызвать заданную точку входа функция MATLAB®, fcn. Программное обеспечение использует входные параметры для fcn, чтобы создать возвращенные типы.

structure_of_types = coder.getArgTypes(test_fcn, {fcn_1,...,fcn_n}) возвращает структуру, содержащую массивы ячеек объектов coder.Type, определенных путем выполнения test_fcn. test_fcn должен вызвать заданные функции точки входа, fcn_1 через fcn_n. Программное обеспечение использует входные параметры для этих функций, чтобы создать возвращенные типы. Возвращенная структура содержит одно поле для каждой функции. Имя поля совпадает с именем соответствующей функции.

structure_of_types = coder.getArgTypes(test_fcn,fcn,'uniform',true) возвращает структуру даже при том, что существует только одна функция точки входа.

Входные параметры

@fcn

Имя или указатель функции MATLAB точки входа, для которой вы хотите определить входные типы. Функция должна быть на пути MATLAB; это не может быть локальная функция. Функция должна быть в перезаписываемой папке.

fcn_1,...,fcn_n

Список, разделенный запятыми имен или указатели функций MATLAB точки входа, для которых вы хотите определить входные типы. Функции должны быть на пути MATLAB; они не могут быть локальной функцией. Функции должны быть в перезаписываемой папке. Имена функций точки входа должны быть уникальными.

test_fcn

Имя или указатель тестовой функции или имя тестового скрипта. Тестовая функция или скрипт должны быть на пути MATLAB. test_fcn должен вызвать по крайней мере одну из заданных функций точки входа. Программное обеспечение использует входные параметры для этих функций, чтобы создать возвращенные типы.

Выходные аргументы

types

Массив ячеек объектов coder.Type, определенных путем выполнения тестовой функции.

structure_of_types

Структура, содержащая массивы ячеек объектов coder.Type, определенных путем выполнения test_fcn. Структура содержит одно поле для каждой функции. Имя поля совпадает с именем соответствующей функции.

Примеры

свернуть все

Получите введенные типы параметра для функционального my_fun рабочим тестовым файлом my_test, который вызывает my_fun. Используйте эти входные типы, чтобы сгенерировать код для my_fun.

В локальной перезаписываемой папке создайте функцию MATLAB.

function y = my_fun(u,v) %#codegen
	y = u+v;
end

В той же папке создайте тестовую функцию.

function y = my_test
	a = single(10);
 	b = single(20);
	y = my_fun(a,b);
end

Запустите тестовую функцию, чтобы получить входные типы для my_fun.

types = coder.getArgTypes('my_test','my_fun')
types = 

    [1x1 coder.PrimitiveType]    [1x1 coder.PrimitiveType]

Сгенерируйте MEX-функцию для my_fun с помощью этих входных типов в качестве входных параметров в качестве примера.

codegen my_fun -args types

В текущей папке codegen генерирует MEX-функцию, my_fun_mex, который принимает входные параметры типа single.

Можно теперь протестировать 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.

function y = my_fun1(u) %#codegen
y = u;

В той же папке создайте функцию, my_fun2.

function y = my_fun2(u, v) %#codegen
y = u + v;

В той же папке создайте тестовую функцию.

function [y1, y2] =  my_test2
	a = 10;
	b = 20;
	y1 = my_fun1(a);
	y2 = my_fun2(a,b);
end

Запустите тестовую функцию, чтобы получить входные типы для my_fun1 и my_fun2.

types = coder.getArgTypes('my_test2',{'my_fun1','my_fun2'})
types = 

    my_fun1: {[1x1 coder.PrimitiveType]}
    my_fun2: {[1x1 coder.PrimitiveType]  [1x1 coder.PrimitiveType]}

Сгенерируйте MEX-функцию для my_fun1 и my_fun2 с помощью этих входных типов в качестве входных параметров в качестве примера.

codegen my_fun1 -args types.my_fun1 my_fun2 -args types.my_fun2

В текущей папке codegen генерирует MEX-функцию, my_fun1_mex, с двумя точками входа, my_fun1 и my_fun2, которые принимают входные параметры типа double.

Можно теперь протестировать каждую точку входа в MEX-функции. Например:

y1 = my_fun1_mex('my_fun1',10)
y2 = my_fun1_mex('my_fun2',15, 25)

Советы

  • Перед использованием coder.getArgTypes, запускает тестовая функция в MATLAB, чтобы проверить, что это обеспечивает ожидаемые результаты.

  • Проверьте, что тестовые вызовы функции заданная точка входа функционируют с типами входных данных, подходящими для вашей среды выполнения. Если тестовая функция не вызывает заданную функцию, coder.getArgTypes не может определить входные типы для этой функции.

  • coder.getArgTypes не может вычислить идеальный тип для вашего приложения. Например, вы можете хотеть, чтобы размер был неограничен. coder.getArgTypes возвращает связанное на основе самого большого входного параметра, который он видел. Используйте coder.resize, чтобы настроить размеры возвращенных типов.

  • Для некоторых комбинаций входных параметров coder.getArgTypes не может произвести допустимый тип. Например, если тестовые вызовы функции, функция точки входа с единственными входными параметрами и затем вызывает его с двойными входными параметрами, coder.getArgTypes, генерируют ошибку, потому что нет никакого единственного типа, который может представлять оба вызова.

  • Когда вы сгенерируете код для функции MATLAB, используйте возвращенные типы в качестве входных параметров в качестве примера путем передачи их codegen с помощью опции -args.

Представленный в R2012a

Была ли эта тема полезной?