如何在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 可能与此有关
答案 0 :(得分:3)
不幸的是,自MATLAB R2019a开始,MATLAB Coder不支持以其他变量的大小显示名称(而不是值)的常量变量。我们已在内部记录了您的请求,以便将来考虑解除该限制。