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

木蟲 (正式寫手)
|
我嘗試使用ode15s,出現(xiàn)以下錯誤: 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)該怎么辦呢?是計算不收斂么?該怎么解決呢? 有時候賦予某個特定初值時用ode45就可以很快算出結(jié)果,而且現(xiàn)在ode45雖然算的很慢,但是至今除了因為內(nèi)存不足以外,還沒開始報錯,所以打算長時間算算看,不知道行不行。 |
榮譽(yù)版主 (著名寫手)
![]() |
專家經(jīng)驗: +4 |

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 317求調(diào)劑 +10 | 蛋黃咸肉粽 2026-03-26 | 10/500 |
|
|---|---|---|---|---|
|
[考研] 一志愿211,335分,0856,求調(diào)劑院校和導(dǎo)師 +7 | 傾____蕭 2026-03-27 | 8/400 |
|
|
[考博] 26申博自薦 +6 | whh869393 2026-03-24 | 6/300 |
|
|
[考研] 08工科求調(diào)劑286 +3 | tgs_001 2026-03-28 | 3/150 |
|
|
[考研] 332求92調(diào)劑 +8 | 蕉蕉123 2026-03-28 | 8/400 |
|
|
[考研] 2026年華南師范大學(xué)歡迎化學(xué),化工,生物,生醫(yī)工等專業(yè)優(yōu)秀學(xué)子加入! +3 | llss0711 2026-03-28 | 6/300 |
|
|
[考研] 279求調(diào)劑 +4 | 蝶舞輕繞 2026-03-29 | 4/200 |
|
|
[考研] 調(diào)劑求院校招收 +6 | 鶴鯨鴿 2026-03-28 | 6/300 |
|
|
[考研] 11408軟件工程求調(diào)劑 +3 | Qiu學(xué)ing 2026-03-28 | 3/150 |
|
|
[考研] 311(085601)求調(diào)劑 +4 | liziyeyeye 2026-03-28 | 4/200 |
|
|
[考研] 285求調(diào)劑 +4 | AZMK 2026-03-27 | 7/350 |
|
|
[考研] 266分求材料化工冶金礦業(yè)等專業(yè)的調(diào)劑 +4 | 哇呼哼呼哼 2026-03-26 | 4/200 |
|
|
[考研] 0703化學(xué)一志愿南京師范大學(xué)303求調(diào)劑 +3 | zzffylgg 2026-03-24 | 3/150 |
|
|
[考研] 286求調(diào)劑 +4 | lim0922 2026-03-26 | 4/200 |
|
|
[考研] 求調(diào)劑 +6 | 林之夕 2026-03-24 | 6/300 |
|
|
[考研] 材料調(diào)劑 +8 | 匹克i 2026-03-23 | 8/400 |
|
|
[考研] 351求調(diào)劑 +4 | 麥克阿磊 2026-03-24 | 4/200 |
|
|
[考研] 材料考研求調(diào)劑 +3 | Dendel 2026-03-23 | 6/300 |
|
|
[考研] 網(wǎng)絡(luò)空間安全0839招調(diào)劑 +4 | w320357296 2026-03-25 | 6/300 |
|
|
[考研] 生物學(xué)學(xué)碩求調(diào)劑 +7 | 小羊睡著了? 2026-03-23 | 10/500 |
|