在使用矩阵之前需要预定义变量吗?

在使用矩阵之前需要预定义变量吗


富国沪深
浏览 1114回答 2
2回答

慕盖茨4494581

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

largeQ

我建议把FUN函数的参数改为9个,如x1到x9,FunF(x1,x2........,x9)运算时令前三个为F,即F=[x1,x2,x3]中间三个为PosF,PosF=[x4,x5,x6]后三个为x,x=[x7,x8,x9]
打开App,查看更多内容
随时随地看视频慕课网APP