Чтобы задать входные параметры массива ячеек в командной строке, используйте те же методы, которые вы используете для других типов входных параметров. Вы можете:
Предоставьте вход массива ячеек в качестве примера опции -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
использует эвристику, чтобы классифицировать тип как гомогенный или неоднородный. Если вы хотите различную классификацию, используйте makeHomogeneous
coder.CellType
или методы makeHeterogeneous
. Метод makeHomogeneous
делает гомогенную копию типа. Метод makeHeterogeneous
делает неоднородную копию типа.
makeHomogeneous
и методы makeHeterogeneous
постоянно присваивают классификацию как гомогенную и неоднородную, соответственно. Вы не можете дальнейшее использование один из этих методов, чтобы создать копию, которая имеет различную классификацию.
Если у вас есть тестовый файл, можно использовать coder.getArgTypes
, чтобы определить входные типы. В выходном массиве ячеек типов, для входных параметров массива ячеек, coder.getArgTypes
возвращает объект coder.CellType
. Если вы хотите различную классификацию (гомогенный или неоднородный), используйте методы makeHeterogeneous
или makeHomogeneous
.
Чтобы задать вход массива ячеек на примере, обеспечьте массив ячеек в качестве примера в опции -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