Создайте константу для указания размера массива в MATLAB Coder

Как я могу создать постоянную переменную в MATLAB (и ее результаты — сгенерированный код C), чтобы я мог использовать ее позже в своем коде для указания размера переменных.

Я хочу иметь массив, размер которого не жестко запрограммирован цифрами по всему коду. Я хочу указать размер в начале кода, как мы это делаем в коде C, используя одно из следующих действий:

const int arraySize=5

#define arraysize 5

Позже: int array[arraySize];


Когда я пишу в MATLAB следующее, Coder просто заменяет arraySize фактическим числом 5:

arraySize=int8(5);
array=zeros(1,arraySize); % zeros is just used for specifying size 

Сгенерированный код:

void coder(double A[5])
{
  memset(&A[0], 0, sizeof(double) << 16);
}

Я попытался использовать следующее, но это не позволяет мне использовать arraySize в вычислениях MATLAB:

arraySize=coder.opaque('const int16','5');
A=zeros(1,arraySize);

Это может быть связано с свертыванием констант, которое я не могу отключить!


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


person Amin    schedule 16.03.2019    source источник


Ответы (1)


Наличие постоянной переменной, отображаемой по имени (а не по значению) в размерах других переменных, к сожалению, не поддерживается в MATLAB Coder начиная с MATLAB R2019a. Мы сделали внутреннюю заметку о вашем запросе, чтобы рассмотреть возможность снятия этого ограничения в будущем.

person David Fink    schedule 20.03.2019