matlab中矩陣求逆,報錯說記憶體不足怎麼辦,128g的工作站都跑不下來?

時間 2021-05-06 16:28:19

1樓:Ruhr

MATLAB裡矩陣求逆是很容易出現記憶體不足的。

基本上10000x10000以上的矩陣求逆我都不會考慮在MATLAB直接用pinv()或者 『\』去做了(考慮到我接觸的大部分問題都是病態欠定問題,這裡不考慮inv()的情況)

大矩陣求逆最好還是從演算法上做出改進來入手吧,有很多matrix inversion identity可以看一看是否有用,另外一些large scale SVD的演算法也可以看一看,有時候會有用

2樓:易夕

關於out of memory,有一些可行的辦法,主要包括以下幾點。

第一,清除臨時變數。對於不再需要的臨時變數,要及時清除掉,釋放記憶體。

第二,預分配記憶體。對於占用大記憶體的變數,預先為其分配記憶體,能夠有效避免記憶體碎片化導致的out of memory。

第三,使用稀疏變數。對於有大量0的稀疏矩陣來說,稀疏變數占用記憶體更小。

第四,pack命令。pack命令能夠整理記憶體,將碎片化的記憶體整合起來。

第五,嘗試使用較低精度的運算,比如將double型別改為single。如果可能,可以使用整數型別如int16之類的進行運算。

第六,增大虛擬記憶體。增大虛擬記憶體能夠一定程度上彌補物理記憶體不足的缺點。

第七,僅載入需要的記憶體。對於大型資料集,可以不用一次性全部載入記憶體,參考datastore mapReduce等函式的使用。

易夕:MATLAB: 如何用Mapreduce實現100GB資料的去重並排序?

第八,使用tall陣列。一些函式支援對tall的運算,tall陣列能夠處理無法放入記憶體的資料。

第九,使用多台計算機的記憶體。通過建立計算機集群能夠利用集群內所有記憶體進行計算。

易夕:MATLAB分布式運算:本地計算機集群配置指南

第十,公升級硬體。軟體不夠,硬體來湊。

易夕:如何配置一台適合跑MATLAB的電腦

3樓:蝦兵蟹將

看看128g是記憶體容量還是硬碟儲存容量

要是128g的記憶體的話,那就是軟體和程式的問題了。

要是128g的硬碟儲存的話,,,記憶體容量就難說了。。。

像matlab R2019b平時計算執行所佔記憶體就1G

關於vb的矩陣求逆問題?

掌握原力的小羊 這是我之前做的一次課後作業,當時要趕作業,所以做的一般般,你可以參考參考這個業餘的演算法233333333333 Public Class Form1 Dim m n p q o Dim value1 1 As Single Dim value2 2 As Single Dim va...

MATLAB中矩陣(向量)互相引用的問題?

如果a是行向量 或列向量 且b是向量,那麼a b 書就是行向量 或列向量 這個沒有為什麼,可以認為是規定 第二個你說的正態分佈曲線應該是概率密度函式曲線吧,你可以估計出引數之後繪圖 X randn 1001,1 mu mean X sigma std X x linspace mu 3 sigma,...

矩陣求逆的幾何意義是什麼?

或許可以這樣理解,將一組向量經過某種線性變換 逆矩陣 回歸為單位向量組。若一組向量的秩不滿則不存在逆矩陣,即低維不能線性變換為高維。 單建華 由於知乎不太好貼公式,請移步我的部落格 https blog.csdn.net jhshanvip article month 2020 03 過渡矩陣 舊基...