Чтобы задать входные параметры массива ячеек в командной строке, используйте те же методы, которые вы используете в других типах входных параметров. Вы можете:
Предоставьте вход массива ячеек в качестве примера -args
опция codegen
команда.
Обеспечьте coder.CellType
возразите против -args
опция codegen
команда. Создать coder.CellType
объект, используйте coder.typeof
.
Используйте coder.Constant
задавать постоянный вход массива ячеек.
Для генерации кода массивы ячеек классифицируются как гомогенные или неоднородные. Смотрите Генерацию кода для Массивов ячеек. Когда вы предоставляете массив ячеек в качестве примера codegen
или coder.typeof
, функция определяет, является ли тип массива ячеек гомогенным или неоднородным. Если элементы массива ячеек имеют тот же класс и размер, coder.typeof
возвращает гомогенный тип массива ячеек. Если элементы имеют различные классы, coder.typeof
возвращает неоднородный тип массива ячеек. Для некоторых массивов ячеек классификация как гомогенная или неоднородная неоднозначна. Например, тип для {1 [2 3]} может быть 1x2 неоднородный тип. Первый элемент является двойным, и второй элемент 1x2 дважды. Тип может также быть 1x3 гомогенный тип, в котором элементы имеют класс дважды и размер 1x:2. Для этих неоднозначных случаев, coder.typeof
эвристика использования, чтобы классифицировать тип как гомогенный или неоднородный. Если вы хотите различную классификацию, используйте coder.CellType
makeHomogeneous
или makeHeterogeneous
методы. makeHomogeneous
метод делает гомогенную копию типа. makeHeterogeneous
метод делает неоднородную копию типа.
makeHomogeneous
и makeHeterogeneous
методы постоянно присваивают классификацию как гомогенную и неоднородную, соответственно. Вы не можете дальнейшее использование один из этих методов, чтобы создать копию, которая имеет различную классификацию.
Если у вас есть тестовый файл, можно использовать coder.getArgTypes
определить входные типы. В выходном массиве ячеек типов, для входных параметров массива ячеек, coder.getArgTypes
возвращает coder.CellType
объект. Если вы хотите различную классификацию (гомогенный или неоднородный), используйте makeHomogeneous
или makeHeterogeneous
методы.
Чтобы задать вход массива ячеек на примере, обеспечьте массив ячеек в качестве примера в -args
опция codegen
команда.
Например:
Чтобы задать 1x3 массив ячеек, элементы которого имеют класс дважды:
codegen myfunction -args {{1 2 3}} -report
Входной параметр 1x3 гомогенный массив ячеек, элементы которого 1x1 дважды.
Чтобы задать 1x2 массив ячеек, первый элемент которого имеет char класса и чей второй элемент имеет класс дважды:
codegen myfunction -args {{'a', 1}} -report
Входной параметр 1x2 неоднородный массив ячеек, первый элемент которого 1x1 char и чей второй элемент 1x1 дважды.
Чтобы задать тип входа массива ячеек, используйте coder.typeof
создать coder.CellType
объект. Передайте coder.CellType
возразите против -args
опция codegen
команда.
Например:
Чтобы задать 1x3 массив ячеек, элементы которого имеют класс дважды:
t = coder.typeof({1 2 3}); codegen myfunction -args {t} -report
Входной параметр 1x3 гомогенный массив ячеек, элементы которого 1x1 дважды.
Чтобы задать 1x2 массив ячеек, первый элемент которого имеет char класса и чей второй элемент имеет класс дважды:
t = coder.typeof({'a', 1}); codegen myfunction -args {t}
Входной параметр 1x2 неоднородный массив ячеек, первый элемент которого 1x1 char и чей второй элемент 1x1 дважды.
Можно также использовать усовершенствованный функциональный coder.newtype
создать coder.CellType
объект.
Если coder.typeof
возвращает неоднородный тип массива ячеек, но вы хотите гомогенный тип, используйте makeHomogeneous
метод, чтобы сделать гомогенную копию типа.
Следующий код создает неоднородный тип.
t = coder.typeof({1 [2 3]})
t = coder.CellType 1x2 heterogeneous cell f0: 1x1 double f1: 1x2 double
Чтобы сделать гомогенную копию типа, используйте:
t = makeHomogeneous(t)
t = coder.CellType 1×2 locked homogeneous cell base: 1×:2 double
В качестве альтернативы используйте это обозначение:
t = makeHomogeneous(coder.typeof({1 [2 3]}))
t = coder.CellType 1×2 locked homogeneous cell base: 1×:2 double
Классификация как гомогенная заблокирована (постоянная). Вы не можете дальнейшее использование makeHeterogeneous
метод, чтобы сделать неоднородную копию типа.
Если элементы типа имеют различные классы, такие как char и дважды, вы не можете использовать makeHomogeneous
сделать гомогенную копию типа.
Если вы используете coder.cstructname
чтобы задать имя для типа структуры, который представляет тип в сгенерированном коде, вы не можете создать гомогенную копию типа.
Если coder.typeof
возвращает гомогенный тип массива ячеек, но вы хотите неоднородный тип, используйте makeHeterogeneous
метод, чтобы сделать неоднородную копию типа.
Следующий код создает гомогенный тип.
t = coder.typeof({1 2 3})
t = coder.CellType 1x3 homogeneous cell base: 1x1 double
Чтобы сделать тип неоднородным, используйте:
t = makeHeterogeneous(t)
t = coder.CellType 1×3 locked heterogeneous cell f1: 1×1 double f2: 1×1 double f3: 1×1 double
В качестве альтернативы используйте это обозначение:
t = makeHeterogeneous(coder.typeof({1 2 3}))
t = coder.CellType 1×3 locked heterogeneous cell f1: 1×1 double f2: 1×1 double f3: 1×1 double
Классификация как неоднородная заблокирована (постоянная). Вы не можете дальнейшее использование makeHomogeneous
метод, чтобы сделать гомогенную копию типа.
Если тип является переменным размером, вы не можете использовать makeHeterogeneous
сделать неоднородную копию из него.
Можно задать входные параметры массива ячеек переменного размера следующими способами:
В coder.typeof
вызвать.
Например, чтобы задать массив ячеек переменного размера, первая размерность которого фиксируется и чье второе измерение имеет верхнюю границу 5:
t = coder.typeof({1}, [1 5], [0 1])
t = coder.CellType 1x:5 homogeneous cell base: 1x1 double
Для элементов с теми же классами, но различных размеров, вы можете использование coder.typeof
размер и переменные аргументы размерностей, чтобы создать переменный размер гомогенный тип массива ячеек. Например, следующий код не использует размер и переменные аргументы размерностей. Этот код создает тип для неоднородного массива ячеек.
t = coder.typeof({1 [2 3]})
t = coder.CellType 1x2 heterogeneous cell f0: 1x1 double f1: 1x2 double
Следующий код, который использует размер и аргументы размерностей, создает тип для переменного размера гомогенный массив ячеек типа:
t = coder.typeof({1 [2 3]}, [1 5], [0 1])
t = coder.CellType 1×:5 locked homogeneous cell base: 1×:2 double
Используйте coder.resize
.
Например, чтобы задать массив ячеек переменного размера, первая размерность которого фиксируется и чье второе измерение имеет верхнюю границу 5:
t = coder.typeof({1}); t = coder.resize(t, [1 5], [0,1])
t = coder.CellType 1x5 homogeneous cell base: 1x1 double
Вы не можете использовать coder.resize
с неоднородным типом массива ячеек.
Неоднородный массив ячеек представлен в сгенерированном коде как структура. Чтобы задать имя типа структуры в сгенерированном коде, используйте coder.cstructname
.
Например, чтобы задать имя myname
поскольку массив ячеек вводит в сгенерированном коде:
t = coder.typeof({'a', 1}) t = coder.cstructname(t, 'myname')
t = coder.CellType 1×2 locked heterogeneous cell myname f1: 1×1 char f2: 1×1 double
Если вы используете coder.cstructname
с гомогенным типом массива ячеек, coder.cstructname
возвращает неоднородную копию типа. Однако это - лучшая практика использовать makeHeterogeneous
метод coder.CellType
объект сделать неоднородную копию гомогенного типа массива ячеек. Затем можно использовать coder.cstructname
с неоднородной копией типа.
Чтобы указать, что вход массива ячеек является постоянным, используйте coder.Constant
функция с -args
опция codegen
команда. Например:
codegen myfunction -args {coder.Constant({'red', 1 'green', 2, 'blue', 3})} -report
Вход 1x6 неоднородный массив ячеек. Размеры и классы элементов:
1x3 char
1x1 дважды
1x5 char
1x1 дважды
1x4 char
1x1 дважды
coder.CellType
| coder.getArgTypes
| coder.newtype
| coder.resize
| coder.typeof