exponenta event banner

Задать входные данные массива ячеек в командной строке

Чтобы задать входные данные массива ячеек в командной строке, используйте те же методы, что и для других типов входных данных. Вы можете:

  • Предоставьте пример ввода массива ячеек в -args вариант codegen команда.

  • Предоставить coder.CellType объект для -args вариант codegen команда. Создание coder.CellType объект, использование coder.typeof.

  • Использовать coder.Constant для задания ввода массива постоянных ячеек.

Для генерации кода клеточные массивы классифицируются как однородные или гетерогенные. См. раздел Создание кода для массивов ячеек. При предоставлении примера массива ячеек для codegen или coder.typeofфункция определяет, является ли тип массива ячеек однородным или гетерогенным. Если элементы массива ячеек имеют одинаковый класс и размер, coder.typeof возвращает однородный тип массива ячеек. Если элементы имеют различные классы, coder.typeof возвращает тип гетерогенного массива ячеек. Для некоторых клеточных массивов классификация как однородная или гетерогенная неоднозначна. Например, тип для {1 [2 3]} может быть гетерогенным типом 1x2. Первый элемент является двойным, а второй элемент - двойным. Тип также может быть однородным типом 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, элементы которого являются двойными.

  • Чтобы указать массив ячеек 1x2, первый элемент которого имеет символ класса, а второй элемент имеет двойной класс:

    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, элементы которого являются двойными.

  • Чтобы указать массив ячеек 1x2, первый элемент которого имеет символ класса, а второй элемент имеет двойной класс:

    t = coder.typeof({'a', 1});
    codegen myfunction -args {t}

    Входной аргумент представляет собой массив гетерогенных ячеек 1x2, первый элемент которого является символом 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 и 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 аргументы размера и переменных размеров для создания однородного типа массива ячеек переменного размера. Например, следующий код не использует аргументы размера и переменных размеров. Этот код создает тип для гетерогенного массива ячеек.

    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

  • 1x1 двойной

  • 1x5 символ

  • 1x1 двойной

  • Символ 1x4

  • 1x1 двойной

См. также

| | | |

Связанные примеры

Подробнее