当用Matlab编程时,假如某个矩阵的大小提前不知道,而在循环过程中,该矩阵会不断增大,则会出现如下提示:

警告:变量A似乎会随脚本中迭代次数而改变,请预分配内存以获得更高的运算速度。

那为什么Matlab的矩阵变量要预定义其大小呢?

1、问题示例

比如有如下一段代码。

2、原因分析

3、解决办法

预先定义矩阵变量的大小。当矩阵变量预先定义其大小时,Matlab在计算之前就会一次性找到最合适的块,从而避免因内存不连续,在为矩阵变量动态分配内存时出现错误。

修改如下,根据矩阵估算的大小,提前定义矩阵大小,数值矩阵可用zeros或ones命令来创建,字符矩阵可用cell命令来创建。

PS:当For循环的次数比较少,而计算机的连续内存又足够时,A矩阵的大小即使不提前定义,程序也是可以运行的。

相关推荐