为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

富国沪深 2019-04-04 11:07:16
在使用矩阵之前需要预定义变量吗
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

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

查看完整回答
反对 回复 2019-04-13
?
largeQ

TA贡献2039条经验 获得超7个赞

我建议把FUN函数的参数改为9个,如x1到x9,FunF(x1,x2........,x9)
运算时令前三个为F,即F=[x1,x2,x3]
中间三个为PosF,PosF=[x4,x5,x6]
后三个为x,x=[x7,x8,x9]

查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 1109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信