Ограничения расписания для генерации кода

Когда вы создаете расписания в коде MATLAB®, который вы предназначаете для генерации кода, необходимо создать их при помощи array2timetabletable2timetable, или timetable функции. Для получения дополнительной информации см. Расписания (MATLAB).

Для расписаний у генерации кода есть эти ограничения:

  • Времена строки должны иметь duration тип данных. Времена строки не могут иметь datetime тип данных.

  • Именем первой размерности расписания всегда является 'Time'. Имя первой размерности является также именем вектора времен строки, которые можно отослать к использованию записи через точку.

  • Необходимо задать имена переменных при помощи 'VariableNames' аргумент пары "имя-значение" при создании расписаний из входных массивов при помощи timetable или array2timetable функции.

    Вы не должны задавать 'VariableNames' аргумент, когда вы предварительно выделяете расписание при помощи timetable функционируйте и 'Size' аргумент пары "имя-значение".

  • Имена переменных расписания должны быть допустимыми идентификаторами MATLAB. Имена переменных должны начаться с буквы и могут включать только буквы, цифры и символы нижнего подчеркивания.

  • После того, как вы создадите расписание, вы не можете изменить VariableNamesDimensionNames , или UserData свойства.

    Когда вы создаете расписание, можно задать 'VariableNames' и 'RowTimes' входные параметры, чтобы установить свойства, имеющие те имена.

  • Создать обычное расписание при определении 'SampleRate'Время начала, или 'TimeStep' аргументы пары "имя-значение", сначала используйте coder.Constant функция, чтобы сделать значения постоянными. Если вы не делаете их постоянными, то времена строки считаются неправильными.

    Кроме того, если вы создаете неправильное расписание, затем это остается неправильным, даже если вы устанавливаете его частоту дискретизации или временной шаг.

  • Если вы создаете обычное расписание, и вы пытаетесь установить неправильные времена строки, то ошибка производится.

  • Чтобы индексировать в расписание при помощи имен переменных, сначала используйте coder.Constant функция, чтобы сделать расписание постоянным.

    По умолчанию расписания, которые вы передаете в сгенерированный код как входные параметры, не являются постоянными. Даже их переменные и времена строки не являются постоянными. Если расписание не является постоянным, то операция индексации, которая использует переменные, производит ошибку. Можно индексировать в переменные расписания при помощи числовых или логических индексов, даже если расписание не является постоянным.

  • Чтобы передать индексы расписания в сгенерированный код как входные параметры, сначала используйте coder.Constant функция, чтобы превратить индексы во второе измерение постоянного расписания. Если индексы во второе измерение не являются постоянными, то индексация в переменные производит ошибку.

  • Если вы индексируете в расписание при помощи duration значения или объект производятся timerange или withtol функции, затем выход является всегда непостоянным с переменным количеством строк.

  • Если вы индексируете в обычное расписание при помощи duration значения или объект производятся timerange или withtol функции, затем выход всегда считается неправильным.

  • Вы не можете добавить пользовательские метаданные в расписание. addprop и rmprop функции не поддерживаются.

  • Вы не можете изменить размер расписания присвоениями. Например, этот вызов, чтобы добавить новую строку производит ошибку.

    function TT = foo() %#codegen
        TT = timetable((1:3)',(1:3)','RowTimes',seconds([0,5,10]),...
                       'VariableNames',{'Var1','Var2'});
        TT{4,:} = [5,5];
    end
    

    Удаление строки или переменной присвоением также производит ошибку.

  • Вы не можете добавить новую строку при помощи нового времени строки в присвоении. Например, этот вызов, чтобы добавить новую строку при помощи нового времени строки вместо числового индекса не производит ошибку, но также и не добавляет новую строку.

    function TT = foo() %#codegen
        TT = timetable((1:3)',(1:3)','RowTimes',seconds([0,5,10]),...
                       'VariableNames',{'Var1','Var2'});
        TT{seconds(15),:} = [5,5];
    end
    
  • Когда вы предварительно выделяете расписание, можно задать только следующие типы данных при помощи 'VariableTypes' аргумент пары "имя-значение".

    Имя типа данных

    Начальное значение в каждом элементе

    'double' единственный

    Дважды - или 0 с одинарной точностью

    'doublenan', 'doubleNaN''singlenan', 'singleNaN'

    Дважды - или NaN с одинарной точностью

    'int8' int16 int32 int64

    Подписанный 8-, 16-, 32-, или 64-битный целочисленный 0

    'uint8' uint16 uint32 uint64

    8-без знака, 16-, 32-, или 64-битный целочисленный 0

    'logical'

    0 ложь)

    'datetime'

    NaT значение datetime

    'duration'

    0 секунды, как значение длительности

    'cellstr'

    {''} (ячейка с символьным массивом 0 на 0)

    Если вы задаете 'char' как тип данных, затем timetable предварительно выделяет соответствующую переменную как массив ячеек из символьных векторов, не как символьный массив. Лучшая практика состоит в том, чтобы не создавать переменные расписания, которые являются символьными массивами.

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

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

  • Если два расписания имеют переменные, которые являются массивами ячеек N-D, то вы не можете вертикально конкатенировать расписания.

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

Ограничения, которые применяются к классам также, применяются к расписаниям. Для получения дополнительной информации см. Определение Классов MATLAB для Генерации кода (MATLAB Coder).

Смотрите также

| |

Похожие темы