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);

Типы данных: logical

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

свернуть все

Массив ячеек 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