主要内容

可变大小数据

用于代码生成的可变大小数据定义和不同之处

在代码生成期间,代码生成器将数组(包括标量、向量和矩阵)识别为固定大小或可变大小。

  • 如果代码生成器无法确定数组的大小或数组的大小发生变化,则代码生成器将该数组指定为可变大小。

  • 如果代码生成器可以确定数组的大小不变,则代码生成器将该数组指定为固定大小。

了解代码生成器如何处理固定大小和可变大小数组可以帮助您在代码生成期间诊断和修复错误。如果您的应用程序不需要可变大小数组,您还可以微调可变大小和动态内存分配,这可能会提高生成代码的性能。

模块

MATLAB FunctionSimulink 模型中包含 MATLAB 代码
MATLAB System在模型中包含 System object

函数

coder.areUnboundedVariableSizedArraysSupported检查当前配置设置是否允许无界可变大小数组 (自 R2024a 起)
coder.varsize解决大小不兼容性错误并声明上界

可变大小基础知识

可变大小数组的代码生成 (MATLAB Coder)

可变大小数据是其大小在编译时未知或其大小在运行时可能发生变化的数据。

声明可变大小的 MATLAB Function 模块变量

允许在 MATLAB Function 模块中定义的变量在仿真期间更改大小。

Unbounded Variable-Size Signals

Model unknown size data using dynamic arrays.

为具有 end + 1 索引的增大数组和元胞数组生成代码 (MATLAB Coder)

用简单的语法在 MATLAB® 代码中增大数组和元胞数组。

Specify Upper Bounds for Variable-Size Arrays in Generated Code (MATLAB Coder)

To avoid dynamic memory allocation, specify upper bounds for variable-size arrays.

在代码生成的可变大小支持方面与 MATLAB 的不兼容性 (MATLAB Coder)

了解可变大小数据如何导致生成代码的行为与 MATLAB 不同。

动态内存分配

Use Dynamic Memory Allocation for Variable-Size Arrays in a MATLAB Function Block

Generate C/C++ code that uses dynamic memory allocation.

控制 MATLAB Function 模块中可变大小数组的内存分配

禁用动态内存分配或为 MATLAB Function 模块指定动态内存分配阈值。

疑难解答

解决错误:数组大小不兼容 (MATLAB Coder)

对代码生成过程中出现的大小不兼容性错误进行故障排除。

解决错误:左侧是固定大小,而右侧是可变大小 (MATLAB Coder)

在将可变大小数组赋给固定大小数组时对错误进行故障排除。

解决错误:字符串不支持 coder.varsize (MATLAB Coder)

对将 coder.varsize 与字符串变量结合使用时的代码生成错误进行故障排除。

Resolve Error: coder.varsize Not Supported for Class Properties (MATLAB Coder)

Troubleshoot code generation error when using coder.varsize with properties of a MATLAB class.

增大在运行时初始化为标量的可变大小列数组 (MATLAB Coder)

Resolve Error: Incorrect Size for Expression (MATLAB Coder)

Troubleshoot MEX function error when the size of an array at run time is incompatible with the size of the array in the generated code.

精选示例