Укажите верхние границы массива, если:
Динамическое выделение памяти отключено.
Если динамическое выделение памяти отключено, необходимо указать верхние границы для всех массивов.
Генератор кода не должен использовать динамическое выделение памяти для массива.
Укажите верхние границы, которые приводят к размеру массива (в байтах), который меньше порога динамического выделения памяти.
См. раздел Объявление входов и выходов переменного размера.
При использовании статического распределения генератор кода использует сложный анализ для вычисления верхних границ локальных данных. Однако если при анализе не удается обнаружить верхнюю границу или вычисляется верхняя граница, которая является недостаточно точной для приложения, необходимо явно указать верхние границы для локальных переменных.
Чтобы ограничить значение переменных, задающих размеры массивов переменного размера, используйте assert функция с реляционными операторами. Например:
function y = dim_need_bound(n) %#codegen assert (n <= 5); L= ones(n,n); M = zeros(n,n); M = [L; M]; y = M;
Это assert оператор ограничивает ввод n до максимального размера 5. L - переменный размер с верхними границами 5 в каждом измерении. M переменный размер с верхней границей 10 в первом измерении и 5 во втором измерении.
Чтобы задать верхние границы для всех экземпляров локальной переменной в функции, используйте coder.varsize функция. Например:
function Y = example_bounds1(u) %#codegen Y = [1 2 3 4 5]; coder.varsize('Y',[1 10]); if (u > 0) Y = [Y Y+u]; else Y = [Y Y*u]; end
Второй аргумент coder.varsize указывает верхнюю границу для каждого экземпляра переменной, указанной в первом аргументе. В этом примере аргумент [1 10] указывает, что для каждого экземпляра Y:
Первый размер фиксируется размером 1.
Второй размер может вырасти до верхней границы 10.