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