Чтобы задать входные параметры массива ячеек в командной строке, используйте те же методы, которые вы используете в других типах входных параметров. Вы можете:
Предоставьте вход массива ячеек в качестве примера -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