| 5 | 1/1 | 返回列表 |
| 查看: 2567 | 回復(fù): 5 | ||||
| 當(dāng)前只顯示滿足指定條件的回帖,點(diǎn)擊這里查看本話題的所有回帖 | ||||
kittyzoe木蟲 (正式寫手)
|
[求助]
matlab 計(jì)算過程中工作空間變量保存及讀取 求解決內(nèi)存不足的方法
|
|||
|
利用matlab ode45函數(shù)求解常微分方程的過程中, 由于計(jì)算步長較小,計(jì)算時(shí)刻較多,每時(shí)刻均需要保存數(shù)據(jù),最后還沒能到計(jì)算結(jié)束已經(jīng)導(dǎo)致內(nèi)存溢出。 利用save命令將所有變量保存到硬盤,clear內(nèi)存中的變量,然后再利用load命令將所需變量讀取。但load讀取的是保存已計(jì)算的所有時(shí)刻的變量,使計(jì)算變慢,其實(shí)此時(shí)只想讀取前一時(shí)刻的變量,不知使用load命令是否能實(shí)現(xiàn)呢? 或者高手們是否有解決由于保存數(shù)據(jù)較多導(dǎo)致內(nèi)存溢出的更好的辦法呢? |
木蟲 (正式寫手)
|
我嘗試使用ode15s,出現(xiàn)以下錯(cuò)誤: Warning: Failure at t=1.166017e-003. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (3.469447e-018) at time t. > In ode15s at 753 這種情況應(yīng)該怎么辦呢?是計(jì)算不收斂么?該怎么解決呢? 有時(shí)候賦予某個(gè)特定初值時(shí)用ode45就可以很快算出結(jié)果,而且現(xiàn)在ode45雖然算的很慢,但是至今除了因?yàn)閮?nèi)存不足以外,還沒開始報(bào)錯(cuò),所以打算長時(shí)間算算看,不知道行不行。 |
榮譽(yù)版主 (著名寫手)
![]() |
專家經(jīng)驗(yàn): +4 |
|
首先我覺得是不是不用算那沒多步,如果ode45收斂性差,方程剛性的話,可采用ode15s 此外如果確實(shí)需要算很多步 下面的方法可能會(huì)有用 使用xlswrite 或者fprintf 將數(shù)據(jù)寫到text或者excel文件中 使用PACK:PACK可以將matlab中的變量導(dǎo)出到磁盤中,以增加可用內(nèi)存。 減少變量的內(nèi)存開銷:清除工作間不必要的變量。 64位架構(gòu):采用64位的軟硬件架構(gòu),目前實(shí)驗(yàn)室條件下不可行。 3GB切換(3GB switch):由于在windows上運(yùn)行matlab時(shí),如果內(nèi)存的使用超過約1.7G左右就要出現(xiàn)這種錯(cuò)誤,而無論你有多大的內(nèi)存也沒用。幸好現(xiàn)在在Windows XP上,MATLAB現(xiàn)在支持3GB切換(3GB switch)啟動(dòng)選項(xiàng)(boot option),配置額外的1GB的可尋址內(nèi)存到每個(gè)程序上。這增加了你可以儲存到MATLAB workspace中資料的總量約到2.7 GB。這相當(dāng)于33億的精度值。此新增的內(nèi)存區(qū)塊和MATLAB使用剩下的(內(nèi)存)并不是連續(xù)的,所以你不能建立一個(gè)數(shù)組來填滿此空間。 具體做法:修改C:\ Boot.ini文件如下 [boot loader] timeout=30SimWe個(gè)人空間 default=multi(0)disk(0)rdisk(0)partition(2)\WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(2)\WINNT="????" /3GB 注意后面的/3GB就是后加上的。重新啟動(dòng)系統(tǒng)再次運(yùn)行matlab。 |

木蟲 (正式寫手)
|
內(nèi)存不足的問題我已經(jīng)通過存盤的方式解決, 利用save 和load命令確實(shí)好用,在計(jì)算過程中內(nèi)存節(jié)省不少 然后需要保存的變量直接fprintf到txt文件里保存了。 fid=fopen('data.txt','a+'); fprintf(fid,'%16.8e %16.8e %16.8e %16.8e %16.8e\r\n',t,Y); fclose(fid); save matlab.mat clear load matlab.mat t Y DY 這樣save的是計(jì)算時(shí)刻的變量,load出來的是上一時(shí)刻需要的工作變量,繼續(xù)進(jìn)行計(jì)算 |
榮譽(yù)版主 (著名寫手)
![]() |
專家經(jīng)驗(yàn): +4 |

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 085600 286分 材料求調(diào)劑 +10 | 麻辣魷魚 2026-03-27 | 11/550 |
|
|---|---|---|---|---|
|
[考研] 337求調(diào)劑 +4 | 《樹》 2026-03-29 | 4/200 |
|
|
[考研] 考研調(diào)劑 +7 | 小蠟新筆 2026-03-29 | 7/350 |
|
|
[基金申請] 面上5B能上會(huì)嗎? +4 | redcom 2026-03-29 | 4/200 |
|
|
[考研] 289求調(diào)劑 +5 | BrightLL 2026-03-29 | 5/250 |
|
|
[考研] 349求調(diào)劑 +6 | 李木子啊哈哈 2026-03-25 | 6/300 |
|
|
[考研] 343求調(diào)劑 +6 | 愛羈絆 2026-03-29 | 6/300 |
|
|
[考研] 348求調(diào)劑 +5 | 小懶蟲不懶了 2026-03-28 | 5/250 |
|
|
[考研] 0856求調(diào)劑 +7 | 楒桉 2026-03-28 | 7/350 |
|
|
[考研] 347求調(diào)劑 +3 | 山頂見α 2026-03-25 | 3/150 |
|
|
[考研] 286求調(diào)劑 +4 | 丟掉懶惰 2026-03-27 | 7/350 |
|
|
[考研] 308求調(diào)劑 +7 | 墨墨漠 2026-03-27 | 7/350 |
|
|
[考研] 330一志愿中國海洋大學(xué) 化學(xué)工程 085602 有讀博意愿 求調(diào)劑 +3 | wywy.. 2026-03-27 | 4/200 |
|
|
[考研] 化學(xué)調(diào)劑 +4 | 愛吃番茄的旭 2026-03-24 | 5/250 |
|
|
[考研] 0703化學(xué)一志愿南京師范大學(xué)303求調(diào)劑 +3 | zzffylgg 2026-03-24 | 3/150 |
|
|
[考研] 求調(diào)劑 一志愿 本科 北科大 化學(xué) 343 +6 | 13831862839 2026-03-24 | 7/350 |
|
|
[考研] 生物學(xué) 296 求調(diào)劑 +4 | 朵朵- 2026-03-26 | 6/300 |
|
|
[考研] 07化學(xué)303求調(diào)劑 +5 | 睿08 2026-03-25 | 5/250 |
|
|
[考研] 0854AI CV方向招收調(diào)劑 +4 | 章小魚567 2026-03-23 | 4/200 |
|
|
[有機(jī)交流]
20+3
|
FENGSHUJEI 2026-03-23 | 5/250 |
|