isHeterogeneous

Класс: кодер. CellType
Пакет: кодер

Определите, представляет ли тип массива ячеек неоднородный массив ячеек

Синтаксис

tf = isHeterogeneous (t)

Описание

tf = isHeterogeneous(t) возвращает true, если объект coder.CellType t неоднороден. В противном случае это возвращает false.

Примеры

развернуть все

Создайте объект coder.CellType для массива ячеек, элементы которого имеют различные классы.

t = coder.typeof({'a', 1})
t = 

coder.CellType
   1x2 heterogeneous cell 
      f0: 1x1 char
      f1: 1x1 double

Определите, представляет ли объект coder.CellType неоднородный массив ячеек.

isHeterogeneous(t)
ans =

     1

Запишите функциональный assign_name. Если входной тип, t неоднороден, функция, возвращает копию t. Копия задает имя для типа структуры, который представляет тип массива ячеек в сгенерированном коде.

function ts = assign_name(t, str_name)
assert(isHeterogeneous(t));
ts = coder.cstructname(t, str_name);
disp ts
end

Создайте гомогенный тип tc.

tc = coder.typeof({1 2 3});

Передайте tc make_varsize.

tc1 = assign_name(tc, 'myname')

Утверждения перестали работать, потому что tc не неоднороден.

Создайте неоднородный тип tc.

tc = coder.typeof({'a' 1});

Передайте tc make_varsize.

tc1 = assign_name(tc, 'myname')
tc1 = 

coder.CellType
   1x2 heterogeneous cell myname
      f0: 1x1 char
      f1: 1x1 double

Советы

  • coder.typeof определяет, является ли тип массива ячеек гомогенным или неоднородным. Если элементы массива ячеек имеют тот же класс и размер, coder.typeof возвращает гомогенный тип массива ячеек. Если элементы имеют различные классы, coder.typeof возвращает неоднородный тип массива ячеек. Для некоторых массивов ячеек классификация как гомогенная или неоднородная неоднозначна. Например, тип для {1 [2 3]} может быть 1x2 неоднородный тип. Первый элемент является двойным, и второй элемент 1x2 дважды. Тип может также быть 1x3 гомогенный тип, в котором элементы имеют класс дважды и размер 1x:2. Для этих неоднозначных случаев coder.typeof использует эвристику, чтобы классифицировать тип как гомогенный или неоднородный. Если вы хотите различную классификацию, используйте методы makeHeterogeneous или makeHomogeneous. Метод makeHomogeneous делает гомогенную копию типа. Метод makeHeterogeneous делает неоднородную копию типа.

    makeHomogeneous и методы makeHeterogeneous постоянно присваивают классификацию как гомогенную и неоднородную, соответственно. Вы не можете позже использовать один из этих методов, чтобы создать копию, которая имеет различную классификацию.

Введенный в R2015b

Была ли эта тема полезной?