Создать константу для указания размера массива в MATLAB Coder - PullRequest
0 голосов
/ 17 марта 2019

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

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

const int arraySize=5

#define arraysize 5

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


Когда янапишите следующее в MATLAB, кодер просто заменяет 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);

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


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

1 Ответ

3 голосов
/ 20 марта 2019

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

...