主要内容

预先配置

循环每次通过循环时都会增加数据结构的大小,这会对性能和内存使用产生不利影响。重复调整数组大小通常需要MATLAB®花额外的时间寻找更大的连续内存块,然后将数组移动到这些块中。通常,您可以通过预分配数组所需的最大空间来提高代码执行时间。

下面的代码显示了创建标量变量所需的时间,x,然后逐渐增大大小x在一个循环。

Tic x = 0;对于k = 2:1000000 x(k) = x(k-1) + 5;toc结束
运行时间为0.301528秒。

如果你预先分配一个1 × 1,000,000的内存块x并将其初始化为零,那么代码运行速度会快得多,因为不需要为不断增长的数据结构重复重新分配内存。

Tic x = 0 (1,1000000);对于k = 2:1000000 x(k) = x(k-1) + 5;toc结束
经过的时间是0.011938秒。

对你想初始化的数组类型使用适当的预分配函数:

  • 0对于数值型数组

  • 字符串为字符串数组

  • 细胞细胞数组

  • 表格对于表数组

预分配非双矩阵

当你预先分配一个内存块来保存某种类型的矩阵而不是,避免使用该方法

一个= int8 (0 (100));

这个语句预先分配了一个100乘100的矩阵int8,首先创建一个完整的矩阵值,然后通过将每个元素转换为int8.将数组创建为int8值节省时间和内存。例如:

A = 0 (100, 'int8');

相关的例子

更多关于