exponenta event banner

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