| 6 | 1/1 | 返回列表 |
| 查看: 2541 | 回復(fù): 5 | ||||
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)存溢出的更好的辦法呢? |
榮譽版主 (著名寫手)
![]() |
專家經(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上運行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)再次運行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)存不足以外,還沒開始報錯,所以打算長時間算算看,不知道行不行。 |
木蟲 (正式寫手)
|
內(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īng)驗: +4 |

木蟲 (正式寫手)
| 6 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 一志愿中國石油大學(xué)(華東) 本科齊魯工業(yè)大學(xué) +4 | 石能偉 2026-03-17 | 4/200 |
|
|---|---|---|---|---|
|
[考研] 279分求調(diào)劑 一志愿211 +14 | chaojifeixia 2026-03-19 | 16/800 |
|
|
[考研] 求老師收我 +3 | zzh16938784 2026-03-23 | 3/150 |
|
|
[考研] 284求調(diào)劑 +6 | Zhao anqi 2026-03-22 | 6/300 |
|
|
[考研] 323求調(diào)劑 +6 | 洼小桶 2026-03-18 | 6/300 |
|
|
[考研] 0854電子信息求調(diào)劑 +3 | α____ 2026-03-22 | 3/150 |
|
|
[考研] 310求調(diào)劑 +4 | baibai1314 2026-03-16 | 4/200 |
|
|
[考研] 311求調(diào)劑 +6 | 冬十三 2026-03-18 | 6/300 |
|
|
[考研] 一志愿武理材料工程348求調(diào)劑 +5 |  ̄^ ̄゜汗 2026-03-19 | 7/350 |
|
|
[考研] 08工科 320總分 求調(diào)劑 +11 | 梨花珞晚風(fēng) 2026-03-17 | 11/550 |
|
|
[考研] 資源與環(huán)境 調(diào)劑申請(333分) +5 | holy J 2026-03-21 | 5/250 |
|
|
[考研] 初試 317 +7 | 半拉月丙 2026-03-20 | 7/350 |
|
|
[考研]
|
Grand777 2026-03-21 | 3/150 |
|
|
[考研] 266求調(diào)劑 +3 | 哇呼哼呼哼 2026-03-20 | 3/150 |
|
|
[考研] 330求調(diào)劑0854 +3 | assdll 2026-03-21 | 3/150 |
|
|
[考研] 材料學(xué)學(xué)碩080502 337求調(diào)劑-一志愿華中科技大學(xué) +4 | 順順順mr 2026-03-18 | 5/250 |
|
|
[考研] 303求調(diào)劑 +5 | 睿08 2026-03-17 | 7/350 |
|
|
[考研] 329求調(diào)劑 +9 | 想上學(xué)吖吖 2026-03-19 | 9/450 |
|
|
[考研] 0817 化學(xué)工程 299分求調(diào)劑 有科研經(jīng)歷 有二區(qū)文章 +22 | rare12345 2026-03-18 | 22/1100 |
|
|
[考研] 261求B區(qū)調(diào)劑,科研經(jīng)歷豐富 +3 | 牛奶很忙 2026-03-20 | 4/200 |
|