在 MATLAB Coder 中创建用于指定数组大小的常量
Posted
技术标签:
【中文标题】在 MATLAB Coder 中创建用于指定数组大小的常量【英文标题】:Create constant for specifying array size in MATLAB Coder 【发布时间】:2019-03-16 23:03:28 【问题描述】:如何在 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】:遗憾的是,从 MATLAB R2019a 开始,MATLAB Coder 不支持在其他变量的大小中按名称(而不是值)显示常量变量。我们已在内部记录您的请求,以便我们考虑在未来解除该限制。
【讨论】:
以上是关于在 MATLAB Coder 中创建用于指定数组大小的常量的主要内容,如果未能解决你的问题,请参考以下文章
从 std::vector 在 MEX C++ 中创建 MATLAB 数组