Следующие общие ограничения применяются к нескольким функциям тулбокса, но только для генерации кода. Чтобы определить, какое из этих ограничений применяется к определенным библиотечным функциям, см. таблицу в Функциях Тулбокса с Ограничениями для Данных Переменного Размера.
Входные параметры к библиотечной функции должны быть векторами переменной длины или векторами фиксированного размера. Вектор переменной длины является массивом переменного размера, который имеет форму 1x:n
, или :nx1
(одна размерность переменная измеренный, и другой фиксируется в размере 1). Другие формы не разрешены, даже если они - векторы во время выполнения.
Это ограничение применяется к функциям, которые берут рабочую размерность (размерность, по которой можно действовать) как вход. В MATLAB® и в генерации кода, если вы не предоставляете рабочую размерность, функция выбирает ее. В MATLAB функция выбирает первую размерность, размер которой не равняется 1. Для генерации кода функция выбирает первую размерность, которая имеет переменный размер, или это имеет фиксированный размер, который не равняется 1. Если рабочая размерность имеет переменный размер, и это становится 1 во время выполнения, то рабочая размерность отличается от рабочей размерности в MATLAB. Поэтому, когда проверки ошибки времени выполнения включены, ошибка может произойти.
Например, предположите, что X
является матрицей переменного размера с размерностями 1x:3x:5
. В сгенерированном коде sum(X)
ведет себя как sum(X,2)
. В MATLAB sum(X)
ведет себя как sum(X,2)
, если size(X,2)
не равняется 1. В MATLAB, когда size(X,2)
равняется 1, sum(X)
ведет себя как sum(X,3)
.
Чтобы избежать этой проблемы, задайте намеченную рабочую размерность явным образом как постоянное значение. Например, sum(X,2)
.
Функция выдает ошибку, когда массив переменного размера, который не является вектором переменной длины, принимает форму вектора во время выполнения. Чтобы избежать проблемы, задайте вход явным образом как вектор переменной длины вместо массива переменного размера.
Функция выдает ошибку, если массив переменного размера принимает скалярное значение во время выполнения. Чтобы избежать этой проблемы, задайте скаляры как фиксированный размер.
Функции списка следующих таблиц, которые имеют ограничения генерации кода для данных переменного размера. Для дополнительных ограничений для этих функций и ограничений для всех функций и объектов, поддержанных для генерации кода, смотрите Функции и Объекты, Поддержанные для Генерации кода C/C++ — Алфавитный список.
Функция | Ограничения для данных Переменного Размера |
---|---|
all |
|
any |
|
cat |
|
conv |
|
cov |
|
cross |
|
deconv |
|
detrend |
|
diag |
|
diff |
|
fft |
|
filter |
|
hist |
|
histc |
|
ifft |
|
ind2sub |
|
interp1 |
|
ipermute |
|
issorted |
|
magic |
|
max |
|
maxk |
|
mean |
|
median |
|
min |
|
mink |
|
mode |
|
mtimes | Считайте умножение |
nchoosek |
|
permute |
|
planerot |
|
poly |
|
polyfit |
|
prod |
|
rand |
|
randi |
|
randn |
|
reshape |
|
roots |
|
shiftdim |
|
sort |
|
std |
|
sub2ind |
|
sum |
|
trapz |
|
typecast |
|
var |
|
vecnorm |
|