创建常量以在MATLAB Coder中指定数组大小

时间:2019-03-16 23:03:29

标签: matlab const constants 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);
}

我尝试使用以下内容,但不允许我在MATLAB计算中使用arraySize

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

这可能与我无法禁用的恒定折叠有关!


此数组大小可能会在不同的函数和代码中重复多次,因此 global 可能与此有关

1 个答案:

答案 0 :(得分:3)

不幸的是,自MATLAB R2019a开始,MATLAB Coder不支持以其他变量的大小显示名称(而不是值)的常量变量。我们已在内部记录了您的请求,以便将来考虑解除该限制。