Чтобы задать входные параметры массива ячеек в командной строке, используйте те же методы, которые вы используете для других типов входных параметров. Вы можете:
Предоставьте вход массива ячеек в качестве примера опции -args команды fiaccel.
Предоставьте объект coder.CellType опции -args команды fiaccel. Чтобы создать объект coder.CellType, используйте coder.typeof.
Используйте coder.Constant, чтобы задать постоянный вход массива ячеек.
Для генерации кода массивы ячеек классифицируются как гомогенные или неоднородные. Смотрите Генерацию кода для Массивов ячеек. Когда вы предоставляете массив ячеек в качестве примера fiaccel или coder.typeof, функция определяет, является ли тип массива ячеек гомогенным или неоднородным. Если элементы массива ячеек имеют тот же класс и размер, coder.typeof возвращает гомогенный тип массива ячеек. Если элементы имеют различные классы, coder.typeof возвращает неоднородный тип массива ячеек. Для некоторых массивов ячеек классификация как гомогенная или неоднородная неоднозначна. Например, тип для {1 [2 3]} может быть 1x2 неоднородный тип. Первый элемент является двойным, и второй элемент 1x2 дважды. Тип может также быть 1x3 гомогенный тип, в котором элементы имеют класс дважды и размер 1x:2. Для этих неоднозначных случаев coder.typeof использует эвристику, чтобы классифицировать тип как гомогенный или неоднородный. Если вы хотите различную классификацию, используйте makeHomogeneous coder.CellType или методы makeHeterogeneous. Метод makeHomogeneous делает гомогенную копию типа. Метод makeHeterogeneous делает неоднородную копию типа.
makeHomogeneous и методы makeHeterogeneous постоянно присваивают классификацию как гомогенную и неоднородную, соответственно. Вы не можете дальнейшее использование один из этих методов, чтобы создать копию, которая имеет различную классификацию.
Чтобы задать вход массива ячеек на примере, обеспечьте массив ячеек в качестве примера в опции -args команды fiaccel.
Например:
Чтобы задать 1x3 массив ячеек, элементы которого имеют класс дважды:
fiaccel myfunction -args {{1 2 3}} -report
Входной параметр 1x3 гомогенный массив ячеек, элементы которого 1x1 дважды.
Чтобы задать 1x2 массив ячеек, первый элемент которого имеет char класса и чей второй элемент имеет класс дважды:
fiaccel myfunction -args {{'a', 1}} -report
Входной параметр 1x2 неоднородный массив ячеек, первый элемент которого 1x1 char и чей второй элемент 1x1 дважды.
Чтобы задать тип входа массива ячеек, используйте coder.typeof, чтобы создать объект coder.CellType. Передайте объект coder.CellType опции -args команды fiaccel.
Например:
Чтобы задать 1x3 массив ячеек, элементы которого имеют класс дважды:
t = coder.typeof({1 2 3});
fiaccel myfunction -args {t} -reportВходной параметр 1x3 гомогенный массив ячеек, элементы которого 1x1 дважды.
Чтобы задать 1x2 массив ячеек, первый элемент которого имеет char класса и чей второй элемент имеет класс дважды:
t = coder.typeof({'a', 1});
fiaccel 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.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.Constant с опцией -args команды fiaccel. Например:
fiaccel myfunction -args {coder.Constant({'red', 1 'green', 2, 'blue', 3})} -report
Вход 1x6 неоднородный массив ячеек. Размеры и классы элементов:
1x3 char
1x1 дважды
1x5 char
1x1 дважды
1x4 char
1x1 дважды
coder.CellType | coder.newtype | coder.resize | coder.typeof