Пакет: кодер
Создайте объект coder.Type
представлять тип входного параметра функции точки входа
t = coder.typeof(v)
t = coder.typeof(v, sz, variable_dims)
t = coder.typeof(t)
создает объект, который выводит от t
= coder.typeof(v
)coder.Type
, чтобы представлять тип v
для генерации кода. Используйте coder.typeof
, чтобы задать только входные типы параметра. Например, используйте его с функцией fiaccel
опция -args
. Не используйте его в коде MATLAB®, из которого вы намереваетесь сгенерировать MEX-функцию.
возвращает измененную копию t
= coder.typeof(v
, sz
, variable_dims
)t
= coder.typeof (v
) с (верхней границей) размер, заданный sz
и переменными размерностями, заданными variable_dims
.
Если sz
задает inf
для размерности, то размер размерности неограничен, и размерность является переменным размером.
Когда sz
является []
, верхние границы v
не изменяются.
Если вы не задаете параметр входа variable_dims
, ограниченные размерности типа фиксируются.
Скалярный variable_dims
применяется ко всем размерностям. Однако, если variable_dims
является 1
, размер одноэлементной размерности остается фиксированным.
Когда v
является массивом ячеек, элементы которого имеют те же классы, но различные размеры, если вы задаете размерности переменного размера, coder.typeof
, создают гомогенный тип массива ячеек. Если элементы имеют различные классы, coder.typeof
сообщает об ошибке.
, то, где t
= coder.typeof(t
)t
является объектом coder.Type
, возвращает сам t
.
|
Вектор размера, задающий каждую размерность текстового объекта. |
|
Объект |
|
Выражение MATLAB, которое описывает множество значений, представленное этим типом.
|
|
Логический вектор, который задает, является ли каждая размерность переменным размером (TRUE) или (FALSE) фиксированный размер. Для массива ячеек, если элементы имеют различные классы, вы не можете задать размерности переменного размера. |
|
Объект |
Создайте тип для простого фиксированного размера, который удваивает матрица 5x6
.
coder.typeof(ones(5, 6)) % returns 5x6 double coder.typeof(0, [5 6]) % also returns 5x6 double
Создайте тип для матрицы переменного размера, удваивается.
coder.typeof(ones(3,3), [], 1) % returns :3 x :3 double % ':' indicates variable-size dimensions
Создайте тип для структуры с полем переменного размера.
x.a = coder.typeof(0,[3 5],1); x.b = magic(3); coder.typeof(x) % Returns % coder.StructType % 1x1 struct % a: :3x:5 double % b: 3x3 double % ':' indicates variable-size dimensions
Создайте тип для гомогенного массива ячеек с полем переменного размера.
a = coder.typeof(0,[3 5],1); b = magic(3); coder.typeof({a b}) % Returns % coder.CellType % 1x2 homogeneous cell % base: :3x:5 double % ':' indicates variable-size dimensions
Создайте тип для неоднородного массива ячеек.
a = coder.typeof('a'); b = coder.typeof(1); coder.typeof({a b}) % Returns % coder.CellType % 1x2 heterogeneous cell % f0: 1x1 char % f1: 1x1 double
Создайте переменный размер гомогенный тип массива ячеек из массива ячеек, который имеет тот же класс, но различные размеры.
Создайте тип для массива ячеек, который содержит два вектора символов с различными размерами. Тип массива ячеек неоднороден.
coder.typeof({'aa', 'bbb'}) % Returns % coder.CellType % 1x2 heterogeneous cell % f0: 1x2 char % f1: 1x3 char
Создайте тип с помощью того же входа массива ячеек. На этот раз укажите, что тип массива ячеек имеет размерности переменного размера. Тип массива ячеек является гомогенным.
coder.typeof({'aa','bbb'},[1,10],[0,1]) % Returns % coder.CellType % 1x:10 homogeneous cell % base: 1x:3 char
Создайте тип для матрицы с размерностями переменного размера и фиксированным размером.
coder.typeof(0, [2,3,4], [1 0 1]); % Returns :2x3x:4 double % ':' indicates variable-size dimensions
coder.typeof(10, [1 5], 1) % returns double 1 x :5 % ':' indicates variable-size dimensions
Создайте тип для матрицы, удваивается, первая размерность неограниченное, второе измерение с фиксированным размером.
coder.typeof(10,[inf,3]) % returns double:inf x 3 % ':' indicates variable-size dimensions
Создайте тип для матрицы, удваивается, первая размерность неограниченное, второе измерение с переменным размером с верхней границей 3
.
coder.typeof(10, [inf,3],[0 1]) % returns double :inf x :3 % ':' indicates variable-size dimensions
Преобразуйте матрицу фиксированного размера в матрицу переменного размера.
coder.typeof(ones(5,5), [], 1) % returns double :5x:5 % ':' indicates variable-size dimensions
Создайте вложенную структуру (структура как поле другой структуры).
S = struct('a',double(0),'b',single(0)) SuperS.x = coder.typeof(S) SuperS.y = single(0) coder.typeof(SuperS) % Returns % coder.StructType % SuperS: 1x1 struct % with fields % x: 1x1 struct % with fields % a: 1x1 double % b: 1x1 single % y: 1x1 single
Создайте структуру, содержащую массив переменного размера структур как поле.
S = struct('a',double(0),'b',single(0)) SuperS.x = coder.typeof(S,[1 inf],[0 1]) SuperS.y = single(0) coder.typeof(SuperS) % Returns % coder.StructType % SuperS: 1x1 struct % with fields % x: 1x:inf struct % with fields % a: 1x1 double % b: 1x1 single % y: 1x1 single % ':' indicates variable-size dimensions
Создайте тип для объекта класса значения
Создайте этот класс значения:
classdef mySquare properties side; end methods function obj = mySquare(val) if nargin > 0 obj.side = val; end end function a = calcarea(obj) a = obj.side * obj.side; end end end
Создайте объект mySquare
.
sq_obj = coder.typeof(mySquare(4))
sq_obj = coder.ClassType 1×1 mySquare side: 1×1 double
Создайте тип для объекта, который имеет те же свойства как sq_obj
.
t = coder.typeof(sq_obj)
t = coder.ClassType 1×1 mySquare side: 1×1 double
Также можно создать тип из определения класса:
t = coder.typeof(mySquare(4))
t = coder.ClassType 1×1 mySquare side: 1×1 double
Создайте тип для скаляра строки
Задайте скаляр строки. Например:
s = "mystring";
Создайте тип из s
.
t = coder.typeof(s);
Чтобы сделать переменный размер t
, присвойте свойство Value
t
к типу для вектора символов переменного размера, который имеет верхнюю границу, которую вы хотите. Например, укажите, что тип t
является переменным размером с верхней границей 10.
t.Properties.Value = coder.typeof('a',[1 10], [0 1]);
Чтобы указать, что t
является переменным размером без верхней границы:
t.Properties.Value = coder.typeof('a',[1 inf]);
Передайте тип codegen
при помощи опции -args
.
codegen myFunction -args {t}
Для разреженных матриц coder.typeof
пропускает верхние границы для размерностей переменного размера.
coder.typeof
фиксирует размер одноэлементной размерности, если аргумент variable_dims
явным образом не указывает, что одноэлементная размерность имеет переменный размер.
Например, следующий код задает 1:10 дважды. Первая размерность (одноэлементная размерность) имеет фиксированный размер. Второе измерение имеет переменный размер.
t = coder.typeof(5,[1 10],1)
t = coder.typeof(5,[1 10],[1 1])
Для блока MATLAB function одноэлементные размерности сигналов ввода или вывода не могут иметь переменного размера.
Если вы уже указываете, что тип входной переменной с помощью функции типа, не использует coder.typeof
, если вы также не хотите задать размер. Например, вместо coder.typeof(single(0))
, используйте синтаксис single(0)
.
Для типов массива ячеек coder.typeof
определяет, является ли тип массива ячеек гомогенным или неоднородным. Если элементы массива ячеек имеют тот же класс и размер, coder.typeof
возвращает гомогенный тип массива ячеек. Если элементы имеют различные классы, coder.typeof
возвращает неоднородный тип массива ячеек. Для некоторых массивов ячеек классификация как гомогенная или неоднородная неоднозначна. Например, тип для {1 [2 3]} может быть 1x2 неоднородный тип, где первый элемент является двойным, и второй элемент 1x2 дважды. Тип может также быть 1x3 гомогенный тип, в котором элементы имеют класс дважды и размер 1x:2. Для этих неоднозначных случаев coder.typeof
использует эвристику, чтобы классифицировать тип как гомогенный или неоднородный. Если вы хотите различную классификацию, используйте кодер. CellType makeHomogeneous
или методы makeHeterogeneous
, чтобы сделать тип с классификацией, которую вы хотите. Метод makeHomogeneous
делает гомогенную копию типа. Метод makeHeterogeneous
делает неоднородную копию типа.
makeHomogeneous
и методы makeHeterogeneous
постоянно присваивают классификацию как неоднородную и гомогенную, соответственно. Вы не можете дальнейшее использование один из этих методов, чтобы создать копию, которая имеет различную классификацию.
coder.ArrayType
| coder.CellType
| coder.EnumType
| coder.FiType
| coder.PrimitiveType
| coder.StructType
| coder.Type
| coder.newtype
| coder.resize
| fiaccel