Задайте верхние границы для массивов переменного размера

Задайте верхние границы для массива, когда:

  • Динамическое выделение памяти отключено.

    Если динамическое выделение памяти отключено, необходимо задать верхние границы для всех массивов.

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

    Задайте верхние границы, которые приводят к размеру массива (в байтах), который меньше, чем динамический порог выделения памяти.

Задайте верхние границы для MATLAB Function входов и выходов блоков

См. «Объявление входов и выходов переменного размера».

Задайте верхние границы для локальных переменных

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

Ограничьте значение переменных, которые задают размерности массивов переменного размера

Чтобы ограничить значение переменных, которые задают размерности массивов переменного размера, используйте 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.

См. также

Похожие темы