coder.getArgTypes

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

Описание

пример

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

пример

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

пример

struct_of_types = coder.getArgTypes(test_fcn,fcn, 'uniform',struct_flag) возвращает структуру даже при том, что существует только одна функция точки входа. Свойство uniform задает, является ли тип выходного массива структурой (TRUE) массивов ячеек или (FALSE) массива ячеек.

Примеры

свернуть все

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

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

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

Создайте тестовую функцию my_test и сохраните его в файле my_test.m.

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 =

  1×2 cell array

    {1×1 coder.PrimitiveType}    {1×1 coder.PrimitiveType}

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

codegen my_fun -args types

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

Протестируйте MEX-функцию. Например:

 y = my_fun_mex(single(10),single(20))

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

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

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

Создайте функциональный my_fun2. Сохраните его в файле my_fun2.m.

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

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

function [y1, y2] =  my_test2
    a = 10;
    b = single(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 = 

  struct with fields:

    my_fun1: {[1×1 coder.PrimitiveType]}
    my_fun2: {[1×1 coder.PrimitiveType]  [1×1 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',10,20)

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

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

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

Создайте тестовую функцию my_test и сохраните его в файле my_test.m.

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','uniform',true)
types =

   struct with fields:

    my_fun: {[1×1 coder.PrimitiveType]  [1×1 coder.PrimitiveType]}

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

codegen my_fun -args types.my_fun

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

Протестируйте MEX-функцию. Например:

 y = my_fun_mex(single(10),single(20))

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

свернуть все

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

Пример: types = coder.getArgTypes('my_test','my_fun');

Пример: types = coder.getArgTypes(@my_test,@my_fun);

Типы данных: char | string | function_handle

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

Пример: types = coder.getArgTypes('my_test',{'my_fun1','my_fun2'});

Пример: types = coder.getArgTypes(@my_test,{@my_fun1,@my_fun2});

Типы данных: char | string | function_handle

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

Пример: types = coder.getArgTypes('my_test','my_fun');

Типы данных: char | string | function_handle

trueВозвращает структуру массивов ячеек coder.Type объекты определяются путем выполнения test_fcn, даже при том, что существует только одна функция точки входа.
falseВозвращает массив ячеек coder.Type объекты определяются путем выполнения test_fcn.

Пример: coder.getArgTypes('my_test','my_fun','uniform',true);

Типы данных: логический

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

свернуть все

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

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

Советы

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

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

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

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

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

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