在 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 中创建用于指定数组大小的常量的主要内容,如果未能解决你的问题,请参考以下文章

怎样在MATLAB中创建空的N维数组?

从 std::vector 在 MEX C++ 中创建 MATLAB 数组

在另一个类 MATLAB 中创建一个类的对象数组

使用 Matlab Coder 将 C 字符数组转换为 Matlab 字符串

通过引用 coder.ceval 在结构中传递数组

PHP 中创建数组的方法(私人收藏)