在使用矩阵之前需要预定义变量吗
发布网友
发布时间:2022-05-02 13:08
我来回答
共1个回答
热心网友
时间:2022-06-20 04:51
矩阵A的大小会随着for循环次数增加而增加,建议预先定义A的大小,以提高运行速度
原因:
(1)Matlab存储矩阵的方式。Matlab的矩阵是以块(Block)的形式存储的,当Matlab在为即将存储的矩阵划分块时,如果没有相应大小的连续内存,即使实际内存还有剩余,也会报错“Out of Memory”。那为什么内存会不连续呢?因为计算机在使用过程中,存储单元会不断的分配和清除,内存也就被分割成不连续的区域。
(2)动态分配VS预先定义。在动态分配过程中,由于Matlab矩阵变量逐渐增大需要连续为此矩阵分配内存,但由于块的不连续性,当矩阵逐渐变大时,刚开始分配的块很可能不够,Matlab需要移动此块找到更大的块来存储,这样在移动过程中不但占用大量时间,而且很可能由于找不到足够大的块,导致“Out of Memory”;当矩阵变量预先定义其大小时,Matlab在计算之前就一次性找到最合适的块,不需要动态分配内存