为
和而
每次循环都递增增加数据结构大小的循环会对性能和内存使用产生不利影响。重复调整数组大小通常需要MATLAB®花费额外的时间寻找更大的连续内存块,然后将数组移动到这些块中。通常,您可以通过预先分配数组所需的最大空间量来改善代码执行时间。
下面的代码显示了创建标量变量所需的时间,x
,然后逐渐增大大小x
在一个为
循环。
Tic x = 0;x(k) = x(k-1) + 5;toc结束
经过时间是0.301528秒。
如果你预先分配了一个1乘1,000,000的内存块x
并将其初始化为0,那么代码运行速度就会快得多,因为不需要为不断增长的数据结构重复重新分配内存。
Tic x = 0 (1,1000000);x(k) = x(k-1) + 5;toc结束
经过时间是0.011938秒。
对于你想要初始化的数组类型,使用适当的预分配函数:
0
对于数值型数组
细胞
对字符数组
当你预先分配一个内存块来保存一个矩阵,而不是双
,避免使用该方法
一个= int8 (0 (100));
这个语句预先分配了一个100 × 100的矩阵int8
,首先创建一个完整的矩阵双
值,然后通过将每个元素转换为int8
.将数组创建为int8
值可以节省时间和内存。例如:
A = 0 (100, 'int8');