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

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

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

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

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

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

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

Если вы генерируете код при помощи codegen, чтобы задать верхние границы для входных параметров переменного размера, используйте coder.typeof создайте с -args опция. Например:

codegen foo -args {coder.typeof(double(0),[3 100],1)}

Эта команда указывает что вход, чтобы функционировать foo матрица действительных, удваивается с двумя переменными размерностями. Верхняя граница для первой размерности равняется 3. Верхняя граница для второго измерения равняется 100.

Если вы генерируете код при помощи MATLAB® Приложение Coder™, смотрите Specify Properties Входных параметров функции Точки входа Используя Приложение и Сделайте Переменный Размер Размерностей, Когда Они Будут Соответствовать Порогу Размера.

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

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

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

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

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

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте