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

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

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

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

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

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

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

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

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

  • Создать обычное расписание при определении 'SampleRate'Время начала, или 'TimeStep' аргументы пары "имя-значение", сначала используйте 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, потому что эта операция является горизонтальной конкатенацией.

  • Функции принадлежности набора intersect, setdiff, setxor, и union поддержите неотсортированные расписания во всех случаях. Вы не должны задавать 'stable' опция.

  • При использовании convertvars функция:

    • Указатели на функцию не поддерживаются.

    • Вторые и третьи входные параметры (vars и dataType) должно быть постоянным.

    • Вы не можете задать dataType как 'char'.

  • При использовании movevars функция, входной параметр vars не может содержать дублирующиеся имена переменных.

  • При использовании isregular функция:

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

    • Входной параметр timeComponent не может быть календарный модуль. Если вы задаете его, то его значением должен быть 'time'.

  • При использовании retime или synchronize функции:

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

    • 'makima' метод интерполяции не поддерживается.

    • Если VariableContinuity свойства входных расписаний не являются постоянными, затем эта функция игнорирует их.

    • 'weekly', 'monthly', и 'quarterly' временные шаги не поддерживаются.

      • Если входные расписания имеют времена строки, которые являются datetime значения, затем 'daily' и 'yearly' временные шаги также не поддерживаются.

  • При использовании timerange функция, входной параметр unitOfTime не поддерживается.

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

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

| |

Похожие темы