matlab占用太多内存_matlab out of memory问题&&如何使matlab占用更多的内存

对稀疏矩阵的某些运算得到的结果会是普通矩阵(full),或者,在运算过程中需要先转换为普通矩阵,那样的话就会使用大量的内存。求逆很可能就是其中之一。

如果是这个原因,我想不出什么好办法。你最好看看矩阵数据本身有什么特点,看有没有可能把大问题分解为几个小一些的问题来分别求解,也就是采用分而治之的思想。

另外,推荐你花点时间认真读一下MATLAB文档中“Strategies for Efficient Use of Memory”和“Resolving "Out of Memory" Errors”这两部分,也许会有所启发。

========================

补充

又仔细研究了下,如果要计算inv(K)*p,可以试试 K\p,矩阵除的算法与求逆不同,很可能避免内存不足的问题。例如>> n=94507;

>> r=ceil(rand(2*n,1)*n);

>> c=ceil(rand(2*n,1)*n);

>> s=rand(2*n,1);

>> A=sparse(r,c,s,n,n);

>> b = rand(n,1);

>> inv(A);

??? Error using ==> inv

Out of memory. Type HELP MEMORY for your options.

>> x=A\b;

Warning: Matrix is singular to working precision.

(Type "warning off MATLAB:singularMatrix" to suppress this warning.)

可以看到,使用inv函数会导致Out of memory,而矩阵左除则没有问题(出现警告是因为矩阵奇异)。

另外,建议看看豆瓣上的一篇“要好好总结一下超大矩阵求逆的技巧了”。这个在CSDN上也有转载,但未注明出处。不贴链接了,不然度娘经常抽风,自己搜索标题就行。

祝好运!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值