主要内容

代码生成的稀疏矩阵

稀疏矩阵提供高效存储在内存中对于有许多零的数组元素。稀疏矩阵可以提供改善的性能和减少内存使用生成的代码。在稀疏矩阵尺度上计算时间只与非零元素上的操作的数量。

函数用于创建和操纵稀疏矩阵中列出稀疏矩阵。检查是否支持一个函数代码生成,看到函数引用页面。金宝app代码生成不支持使用创建的稀疏矩阵的输入金宝app稀疏的对所有功能。

输入定义

您可以使用coder.typeof初始化一个稀疏矩阵函数的输入。为稀疏矩阵,代码生成器没有跟踪上界为适应维度。所有适应维度被视为无限。

你不能定义稀疏的输入类型以编程方式使用断言语句。

代码生成的指导方针

初始化矩阵,利用稀疏的构造函数代码效率最大化。例如,3×3的单位矩阵,构建一个使用speye (3)而不是稀疏(眼睛(3))

索引分配到稀疏矩阵带来额外的开销相比索引分配到完整的矩阵。例如:

S = speye (10);(7)= 42;

在MATLAB®稀疏矩阵存储在压缩稀疏列格式。当你插入一个新的非零元素一个稀疏矩阵,所有后续非零元素必须下移,列的列。这些额外的操作可以缓慢的性能。看到访问稀疏矩阵

代码生成的局限性

来生成代码,使用稀疏矩阵,必须启用动态内存分配。存储非零元素的数量变化,和他们的价值观,稀疏矩阵在生成的代码中使用适应可变数组。改变动态内存分配设置,明白了控制内存分配适应可变数组。因为稀疏矩阵使用适应可变数组动态内存分配,限制适应数据也适用于稀疏矩阵。

你不能分配稀疏数据不是稀疏的数据。生成的代码使用不同的数据类型为稀疏表示和完整的矩阵。转换和稀疏数据,使用显式的稀疏的完整的转换函数。

你不能定义一个稀疏矩阵与竞争大小规格。代码生成器修复稀疏矩阵的大小,当它产生相应的数据类型定义在C / c++。作为一个例子,这个函数喷火导致代码生成一个错误:

函数y = foo (n)% # codegen如果n > 0 y =稀疏(3 2);其他的y =稀疏(4,3);结束

逻辑索引为稀疏矩阵不支持代码生成。金宝app例如,这个语法会导致一个错误:

S =魔法(3);(年代> 7)= 42;

为稀疏矩阵,你不能删除数组元素通过分配空数组:

(:,2)= [];

另请参阅

||||

相关的话题