exponenta event banner

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

Укажите верхние границы массива, если:

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

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

  • Генератор кода не должен использовать динамическое выделение памяти для массива.

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

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

Эта команда указывает, что входные данные функционируют 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.

См. также

|

Связанные темы