| 6 | 1/1 | 返回列表 |
| 查看: 2545 | 回復(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ā)表 | |
|---|---|---|---|---|
|
[考研] 299求調(diào)劑 +5 | 某某某某位 2026-03-21 | 5/250 |
|
|---|---|---|---|---|
|
[考研] 一志愿陜師大生物學(xué)071000,298分,求調(diào)劑 +3 | SYA! 2026-03-23 | 3/150 |
|
|
[考研] 0854電子信息求調(diào)劑 324 +3 | Promise-jyl 2026-03-23 | 3/150 |
|
|
[考研] 306求調(diào)劑 +9 | chuanzhu川燭 2026-03-18 | 9/450 |
|
|
[考研] 070300,一志愿北航320求調(diào)劑 +3 | Jerry0216 2026-03-22 | 5/250 |
|
|
[考研] 石河子大學(xué)(211、雙一流)碩博研究生長期招生公告 +3 | 李子目 2026-03-22 | 3/150 |
|
|
[考研] 08工科 320總分 求調(diào)劑 +11 | 梨花珞晚風(fēng) 2026-03-17 | 11/550 |
|
|
[考研] 287求調(diào)劑 +8 | 晨昏線與星海 2026-03-19 | 9/450 |
|
|
[考研] 319求調(diào)劑 +4 | 小力氣珂珂 2026-03-20 | 4/200 |
|
|
[考研] 305分求調(diào)劑(食品工程) +4 | Sxy112 2026-03-21 | 6/300 |
|
|
[考研] 297求調(diào)劑 +11 | 戲精丹丹丹 2026-03-17 | 12/600 |
|
|
[考研] 266求調(diào)劑 +3 | 哇呼哼呼哼 2026-03-20 | 3/150 |
|
|
[考研] 求調(diào)劑 +3 | .m.. 2026-03-21 | 4/200 |
|
|
[考研] 332求調(diào)劑 +3 | 鳳凰院丁真 2026-03-20 | 3/150 |
|
|
[考研] 301求調(diào)劑 +10 | yy要上岸呀 2026-03-17 | 10/500 |
|
|
[考研] 303求調(diào)劑 +5 | 睿08 2026-03-17 | 7/350 |
|
|
[考研] 085700資源與環(huán)境308求調(diào)劑 +12 | 墨墨漠 2026-03-18 | 13/650 |
|
|
[考研] 一志愿華中科技大學(xué),080502,354分求調(diào)劑 +5 | 守候夕陽CF 2026-03-18 | 5/250 |
|
|
[考研] 330求調(diào)劑 +4 | 小材化本科 2026-03-18 | 4/200 |
|
|
[考研] 材料學(xué)碩318求調(diào)劑 +5 | February_Feb 2026-03-19 | 5/250 |
|