Вы не можете назначить матрицы переменного размера матрицам фиксированного размера в сгенерированном коде. Рассмотрим этот пример:
Компиляция этой функции приводит к следующей ошибке:
??? 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 спецификация.