代码生成的稀疏矩阵
稀疏矩阵提供高效存储在内存中对于有许多零的数组元素。稀疏矩阵可以提供改善的性能和减少内存使用生成的代码。在稀疏矩阵尺度上计算时间只与非零元素上的操作的数量。
函数用于创建和操纵稀疏矩阵中列出稀疏矩阵。检查是否支持一个函数代码生成,看到函数引用页面。金宝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)= [];
另请参阅
相关的话题
- 稀疏矩阵
- 使用动态分配的c++数组生成的函数接口(MATLAB编码器)