MATLAB out of memory,增加一个内存条可以解决这个问题吗
答案:2 悬赏:60 手机版
解决时间 2021-02-21 10:05
- 提问者网友:半生酒醒
- 2021-02-21 04:38
matlab 要计算一个大些的程序,总是out of memory。其他的网上教各种方法也试过了。。都解决不了问题。想增加个内存条可以解决问题吗?还是CPU的问题呢?如果增加内存条的话有什么注意事项吗?我在这方面是小白。谢谢了
最佳答案
- 五星知识达人网友:不甚了了
- 2021-02-21 06:04
这么说吧。
32位的MATLAB中对于一个矩阵有最大的限制,所有矩阵的总和也有限制,
你可以看一下:
a=memory
返回的内容,第一个是单个矩阵最大的限制,第二个是所有矩阵的和,第三个是MATLAB目前占有内存量。
你看一下如果上面的返回值只有几百M的话,你加内存应当是没有什么问题。
但是如果是1G以上,估计你加内存也没有什么用了。
除非你用64位的。
32位的MATLAB中对于一个矩阵有最大的限制,所有矩阵的总和也有限制,
你可以看一下:
a=memory
返回的内容,第一个是单个矩阵最大的限制,第二个是所有矩阵的和,第三个是MATLAB目前占有内存量。
你看一下如果上面的返回值只有几百M的话,你加内存应当是没有什么问题。
但是如果是1G以上,估计你加内存也没有什么用了。
除非你用64位的。
全部回答
- 1楼网友:低血压的长颈鹿
- 2021-02-21 07:14
矩阵太大了,我很怀疑你的k矩阵能表示出来吗?更不要说后面的求逆及相乘的运算了。
按照你贴出来的数据,k矩阵的维数是 94507*94507,每个元素按照double类型考虑,占8个字节,则k矩阵占用的内存就是
>> 94507*94507*8/1024^3
ans =
66.545也就是66.5g,你的机器内存的确挺多了,但离这个需求还差很远吧?
这么大的矩阵,其元素都有什么样的规律?如果大多数为0,只有少量的非零元素,可以考虑使用稀疏矩阵,例如:
>> k=sparse(94507,94507)
k =
all zero sparse: 94507-by-94507
>> whos
name size bytes class
k 94507x94507 378044 double array (sparse)
ans 1x1 8 double array
grand total is 2 elements using 378052 bytes
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯