Матрицы переменного размера нельзя назначить матрицам фиксированного размера в сгенерированном коде. Рассмотрим следующий пример:
Компиляция этой функции приводит к следующей ошибке:
??? Dimension 1 is fixed on the left-hand side
but varies on the right ...
Существует несколько способов устранения этой ошибки:
Разрешить матрицу A для увеличения путем добавления coder.varsize конструкция:
Явно ограничить размер матрицы B в 3 на 3 путем изменения assert заявление:
Использовать явное индексирование для выполнения B того же размера, что и A:
При присвоении пустой матрицы [] для данных переменного размера MATLAB ® может автоматически изменить форму данных в сгенерированном коде в соответствии с coder.varsize спецификация. Например:
В этом примере: coder.varsize определяет Y как вектор столбца до 10 элементов, поэтому его первый размер фиксируется в размере 1. Заявление Y = [] обозначает первый размер Y как 0, создавая несоответствие. Правая сторона назначения является пустой матрицей, а левая - вектором переменного размера. В этом случае MATLAB изменяет форму пустой матрицы Y = [] в сгенерированном коде в Y = zeros(1,0) таким образом, он соответствует coder.varsize спецификация.