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

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

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

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

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

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

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

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

Чтобы задать верхние границы для входов переменного размера, используйте coder.typeof создайте с помощью fiaccel -args опция. Для примера:

fiaccel foo -args {coder.typeof(fi(0),[3 100],1)}
Эта команда задает, что вход для работы foo является матрицей fi типы с двумя переменными размерностями. Верхняя граница для первой размерности равна 3. Верхняя граница для второго измерения равна 100.

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

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

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

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

См. также

|

Похожие темы