coder.newtype

Пакет: кодер

Создайте объект coder.Type

Синтаксис

t = coder.newtype(numeric_class, sz, variable_dims)
t = coder.newtype(numeric_class, sz, variable_dims, Name, Value)
t = coder.newtype('constant', value)
t = coder.newtype('struct', struct_fields, sz, variable_dims)
t = coder.newtype('cell', cells, sz, variable_dims)
t = coder.newtype('embedded.fi', numerictype, sz, variable_dims, Name, Value)
t = coder.newtype(enum_value, sz, variable_dims)
t = coder.newtype(class_name)
t = coder.newtype('string')

Описание

Примечание

coder.newtype является усовершенствованной функцией, которую можно использовать, чтобы управлять объектом coder.Type. Рассмотрите использование coder.typeof вместо этого. coder.typeof создает тип из примера MATLAB®.

t = coder.newtype(numeric_class, sz, variable_dims) создает представление объекта coder.Type значения класса numeric_class с (верхней границей) размеры sz и переменные размерности variable_dims. Если sz задает inf для размерности, то размер размерности неограничен, и размерность является переменным размером. Когда variable_dims не задан, размерности типа фиксируются за исключением тех, которые неограниченны. Когда variable_dims является скаляром, он применяется к размерностям типа, которые не являются 1 или 0, которые фиксируются.

t = coder.newtype(numeric_class, sz, variable_dims, Name, Value) создает объект coder.Type с дополнительными опциями, заданными одним или несколькими Имя, аргументы пары Значения.

t = coder.newtype('constant', value) создает объект coder.Constant, представляющий одно значение. Используйте этот тип, чтобы задать значение, которое должно быть обработано как константа в сгенерированном коде.

t = coder.newtype('struct', struct_fields, sz, variable_dims) создает объект coder.StructType для массива структур, который имеет те же поля как скалярная структура struct_fields. Типу массива структур задали размер sz и размерности переменного размера, заданные variable_dims.

t = coder.newtype('cell', cells, sz, variable_dims) создает объект coder.CellType для массива ячеек, который имеет ячейки и типы ячейки, заданные cells. Типу массива ячеек задали размер sz и размерности переменного размера, заданные variable_dims. Вы не можете изменить количество ячеек или задать размерности переменного размера для неоднородного массива ячеек.

t = coder.newtype('embedded.fi', numerictype, sz, variable_dims, Name, Value) создает объект coder.FiType, представляющий набор значений фиксированной точки с numerictype и дополнительными опциями, заданными одним или несколькими Имя, аргументы пары Значения.

t = coder.newtype(enum_value, sz, variable_dims) создает объект coder.Type, представляющий набор перечислимых величин класса enum_value.

t = coder.newtype(class_name) создает объект coder.ClassType для объекта класса class_name.

t = coder.newtype('string') создает тип для скаляра строки. Скаляр строки содержит одну часть текста, представленного как вектор символов. Чтобы задать размер вектора символов и является ли второе измерение переменным размером, создайте тип для вектора символов и присвойте его свойству Value скалярного типа строки. Например, t.Properties.Value = coder.newtype('char',[1 10], [0 1]) указывает, что вектор символов в скаляре строки является переменным размером с верхней границей 10.

Входные параметры

numeric_class

Класс множества значений представлен текстовым объектом.

struct_fields

Скалярная структура раньше задавала поля в новом типе структуры.

cells

Массив ячеек объектов coder.Type, которые задают типы ячеек в новом типе массива ячеек.

sz

Вектор размера, задающий каждую размерность текстового объекта. sz не может изменить количество ячеек для неоднородного массива ячеек.

Значение по умолчанию: [1 1]

class_name

Имя класса, от которого можно создать coder.ClassType, заданный как вектор символов, или представить скаляр в виде строки. class_name должен быть именем класса значения.

variable_dims

Логический вектор, который задает, является ли каждая размерность переменным размером (TRUE) или (FALSE) фиксированный размер. Вы не можете задать размерности переменного размера для неоднородного массива ячеек.

Значение по умолчанию: true для размерностей, для которых sz задает верхнюю границу inf; false для всех других размерностей.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

'complex'

Установите complex на true создавать объект coder.Type, который может представлять комплексные числа. Тип должен поддержать комплексные данные.

По умолчанию: false

'fimath'

Задайте локальный fimath. Если fimath не задан, значение по умолчанию использования fimath значения.

Используйте только с t =coder.newtype ('embedded.fi', numerictype, sz, variable_dims, Имя, Значение).

'sparse'

Установите sparse на true создавать объект coder.Type, представляющий разреженные данные. Тип должен поддержать разреженные данные.

Не для использования с t =coder.newtype ('embedded.fi', numerictype, sz, variable_dims, Имя, Значение)

По умолчанию: false

Выходные аргументы

t

Новый объект coder.Type.

Примеры

Создайте тип для использования в генерации кода.

t=coder.newtype('double',[2 3 4],[1 1 0])
% Returns double :2x:3x4
% ':' indicates variable-size dimensions

Создайте тип для матрицы, удваивается, первая размерность неограниченное, второе измерение с фиксированным размером

coder.newtype('double',[inf,3]) 
%   returns double:inf x 3

coder.newtype('double', [inf, 3], [1 0]) 
%   also returns double :inf x3
%   ':' indicates variable-size dimensions

Создайте тип для матрицы, удваивается, первая размерность неограниченное, второе измерение с переменным размером с верхней границей 3

coder.newtype('double', [inf,3],[0 1]) 
%  returns double :inf x :3
%  ':' indicates variable-size dimensions

Создайте тип структуры, чтобы использовать в генерации кода.

ta = coder.newtype('int8',[1 1]);
tb = coder.newtype('double',[1 2],[1 1]);
coder.newtype('struct',struct('a',ta,'b',tb))
% returns struct 1x1
%            a: int8 1x1
%            b: double :1x:2
% ':' indicates variable-size dimensions

Создайте массив ячеек, чтобы использовать в генерации кода.

ta = coder.newtype('int8',[1 1]);
tb = coder.newtype('double',[1 2],[1 1]);
coder.newtype('cell',{ta, tb})
% returns 1x2 heterogeneous cell
%            f0: 1x1 int8
%            f1: :1x:2 double
% ':' indicates variable-size dimensions

Создайте новый постоянный тип, чтобы использовать в генерации кода.

k = coder.newtype('constant', 42);
% Returns
% k = 
%
% coder.Constant
%       42

Создайте объект coder.EnumType с помощью имени существующего перечисления MATLAB.

  1. Задайте перечисление MyColors. На пути MATLAB создайте файл с именем 'MyColors', содержащий:

    classdef MyColors < int32
        enumeration
            green(1),
            red(2),
        end
    end
    

  2. Создайте объект coder.EnumType из этого перечисления.

    t = coder.newtype('MyColors');

Создайте фиксированную точку для использования в генерации кода. Фиксированная точка использует значение по умолчанию fimath значения.

t = coder.newtype('embedded.fi',...
   numerictype(1, 16, 15), [1 2])

t = 
% Returns
% coder.FiType
%   1x2 embedded.fi 
%     DataTypeMode: Fixed-point: binary point scaling
%     Signedness: Signed
%     WordLength: 16
%     FractionLength: 15

Создайте тип для объекта использовать в генерации кода.

  1. Создайте этот класс значения:

    classdef mySquare
        properties
            side;
        end
        methods
            function obj = mySquare(val)
            end
        end
        if nargin > 0
            obj.side = val;
        end
        function a = calcarea(obj)
        a = obj.side * obj.side;
        end
    end
    end

  2. Создайте тип для объекта, который имеет те же свойства как mySquare.

    t = coder.newtype('mySquare')

  3. Измените тип свойства side.

    t.Properties.side = coder.typeof(int8(3))
    t = 
    
    coder.ClassType
       1×1 mySquare   
          side: 1×1 int8

Создайте тип для скаляра строки для использования в генерации кода.

  1. Создайте скалярный тип строки.

    t = coder.newtype('string');

  2. Задайте размер.

    t.Properties.Value = coder.newtype('char',[1, 10])
    t = 
    
    coder.ClassType
       1×1 string -> redirected to -> coder.internal.string   
          Value: 1×10 char

  3. Сделайте размер строковой переменной с верхней границей 10.

    t.Properties.Value = coder.newtype('char',[1, 10], [0, 1])

  4. Сделайте размер строковой переменной без верхней границы.

    t.Properties.Value = coder.newtype('char',[1, inf])

Ограничения

  • Для разреженных матриц coder.newtype пропускает верхние границы для размерностей переменного размера.

Советы

  • coder.newtype фиксирует размер одноэлементной размерности, если аргумент variable_dims явным образом не указывает, что одноэлементная размерность имеет переменный размер.

    Например, следующий код задает 1:10 дважды. Первая размерность (одноэлементная размерность) имеет фиксированный размер. Второе измерение имеет переменный размер.

    t = coder.newtype('double',[1 10],1)
    В отличие от этого, следующий код задает:1-by-:10 дважды. Обе размерности имеют переменный размер.
    t = coder.newtype('double',[1 10],[1 1])

    Примечание

    Для блока MATLAB function одноэлементные размерности сигналов ввода или вывода не могут иметь переменного размера.

Альтернативы

coder.typeof

Введенный в R2011a