24小时热门版块排行榜    

北京石油化工学院2025年硕士研究生招生接受调剂公告
查看: 2228  |  回复: 5
【悬赏金币】回答本帖问题,作者kittyzoe将赠送您 5 个金币

kittyzoe

木虫 (正式写手)

[求助] matlab 计算过程中工作空间变量保存及读取 求解决内存不足的方法

利用matlab ode45函数求解常微分方程的过程中, 由于计算步长较小,计算时刻较多,每时刻均需要保存数据,最后还没能到计算结束已经导致内存溢出。
     利用save命令将所有变量保存到硬盘,clear内存中的变量,然后再利用load命令将所需变量读取。但load读取的是保存已计算的所有时刻的变量,使计算变慢,其实此时只想读取前一时刻的变量,不知使用load命令是否能实现呢?
     或者高手们是否有解决由于保存数据较多导致内存溢出的更好的办法呢?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

kittyzoe(金币+5): 2011-11-11 16:19:45
首先我觉得是不是不用算那没多步,如果ode45收敛性差,方程刚性的话,可采用ode15s
此外如果确实需要算很多步
下面的方法可能会有用
     使用xlswrite 或者fprintf 将数据写到text或者excel文件中
    使用PACK:PACK可以将matlab中的变量导出到磁盘中,以增加可用内存。

     减少变量的内存开销:清除工作间不必要的变量。  
    64位架构:采用64位的软硬件架构,目前实验室条件下不可行。
    3GB切换(3GB switch):由于在windows上运行matlab时,如果内存的使用超过约1.7G左右就要出现这种错误,而无论你有多大的内存也没用。幸好现在在Windows XP上,MATLAB现在支持3GB切换(3GB switch)启动选项(boot option),配置额外的1GB的可寻址内存到每个程序上。这增加了你可以储存到MATLAB workspace中资料的总量约到2.7 GB。这相当于33亿的精度值。此新增的内存区块和MATLAB使用剩下的(内存)并不是连续的,所以你不能建立一个数组来填满此空间。

     具体做法:修改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就是后加上的。重新启动系统再次运行matlab。
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
2楼2011-11-11 15:36:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kittyzoe

木虫 (正式写手)

引用回帖:
2楼: Originally posted by dbb627 at 2011-11-11 15:36:56:
首先我觉得是不是不用算那没多步,如果ode45收敛性差,方程刚性的话,可采用ode15s
此外如果确实需要算很多步
下面的方法可能会有用
     使用xlswrite 或者fprintf 将数据写到text或者excel文件中
    使用P ...

我尝试使用ode15s,出现以下错误:
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
这种情况应该怎么办呢?是计算不收敛么?该怎么解决呢?
有时候赋予某个特定初值时用ode45就可以很快算出结果,而且现在ode45虽然算的很慢,但是至今除了因为内存不足以外,还没开始报错,所以打算长时间算算看,不知道行不行。
3楼2011-11-11 16:13:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kittyzoe

木虫 (正式写手)

内存不足的问题我已经通过存盘的方式解决,
利用save 和load命令确实好用,在计算过程中内存节省不少
然后需要保存的变量直接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出来的是上一时刻需要的工作变量,继续进行计算
4楼2011-11-11 16:18:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

可能边界条件定义不合适,就是初值定义不合适,能把方程贴出来看看吗。
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
5楼2011-11-11 16:19:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kittyzoe

木虫 (正式写手)

引用回帖:
5楼: Originally posted by dbb627 at 2011-11-11 16:19:26:
可能边界条件定义不合适,就是初值定义不合适,能把方程贴出来看看吗。

好,方程中初值我是这么设置的:
x0=[a;0;b;0]

当设置初值a=b的时候非常容易就计算出结果,但是只要设置a与b不相等时,算了很久很久,也没出结果,计算到某一时刻以后步长越来越小,一直在迭代。。。。
很崩溃啊
其中pex(t)是随时间变化的量。


6楼2011-11-14 09:05:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 kittyzoe 的主题更新
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 考研调剂 +10 周运发 2025-04-08 11/550 2025-04-09 00:22 by xiaohe123
[考研] 275求调剂 +13 海南大学材料专� 2025-04-04 14/700 2025-04-08 23:57 by 诗与自由
[考研] 安徽省属一本高校招收硕士调剂名额 +4 W温文尔雅 2025-04-08 4/200 2025-04-08 23:10 by 赵烧鸡腿?
[考研] 0854求调剂 +5 雪梨大 2025-04-08 6/300 2025-04-08 19:36 by 咕噜咕噜23
[考研] 机械学硕278求调剂 +5 elite book 2025-04-06 5/250 2025-04-08 16:14 by b776790195
[考研] 化工求调剂 +17 ***stars 2025-04-08 17/850 2025-04-08 12:32 by zhyzzh
[考研] 290求调剂 +11 谢梦湘 2025-04-07 11/550 2025-04-08 12:22 by edmund7
[考研] 生态293求调剂 +4 asdfdgtgf 2025-04-07 4/200 2025-04-07 22:37 by 星辰般闪耀
[考研] 0854求调剂 +4 楚阳川木 2025-04-07 5/250 2025-04-07 21:47 by sunqijun
[考研] 344求调剂 +14 Fffff~a 2025-04-06 22/1100 2025-04-07 19:21 by 啥南丹你的梦想�
[考研] 求调剂 +6 亮doc 2025-04-06 7/350 2025-04-07 17:43 by 外圆内方--
[考研] 292求调剂 +9 2025417 2025-04-07 9/450 2025-04-07 14:32 by 197024
[考研] 0805一志愿南信大301分请求调剂 +4 会的。一定 2025-04-06 4/200 2025-04-06 09:31 by xujia_8807
[考研] 277求调剂 +11 冰冰,,, 2025-04-04 11/550 2025-04-05 17:52 by 手札礼记
[考研] 求调剂085600一志愿贵州大学 +9 藕片粉 2025-04-03 9/450 2025-04-05 00:11 by 888汉
[考研] 生物学求调剂 +3 iopooi 2025-04-03 3/150 2025-04-04 22:34 by cbzhang
[考研] 材料考研272求调剂 +8 杀死秋水 2025-04-03 8/400 2025-04-04 06:49 by Innconce
[考研] 考研调剂! +12 wangdazheng 2025-04-02 12/600 2025-04-03 09:35 by 哈哈哈179
[考研] 化工专硕298求调剂 +9 166054 2025-04-02 9/450 2025-04-02 23:34 by 星空星月
[考研] 251求调剂 +3 晟晨龘龘 2025-04-02 8/400 2025-04-02 21:15 by 晟晨龘龘
信息提示
请填处理意见
婢跺秷鐦拫鍐ㄥ婢跺秷鐦拫鍐ㄥ
婢跺秷鐦拫鍐ㄥ娴滃瞼娣惍锟�閼惧嘲褰囨径宥堢槸 & 鐠嬪啫澧忛幐鍥у础閿涳拷瀵邦喕淇婇幍顐$閹碉拷
閸熷棗濮熼崥鍫滅稊閸熷棗濮熼崥鍫滅稊
閸熷棗濮熼崥鍫滅稊娴滃瞼娣惍锟�閸熷棗濮熼崥鍫滅稊閸溿劏顕�瀵邦喕淇婇幍顐$閹碉拷(婢跺洦鏁為敍姘櫌閸斺€虫値娴o拷)
鐎涳附婀抽獮鑼舵彛鐎涳附婀抽獮鑼舵彛
鐎涳附婀抽獮鑼舵彛娴滃瞼娣惍锟�瀵邦喕淇婇幍顐$閹碉拷娴滃棜袙閺堚偓閺傛澘顒熼張顖氬叡鐠愶拷
鐠佺儤鏋冩潏鍛嚤鐠佺儤鏋冩潏鍛嚤
鐠佺儤鏋冩潏鍛嚤娴滃瞼娣惍锟�瀵邦喕淇婇幍顐$閹碉拷濞h濮為懓浣哥瑎閿涘苯鍘ょ拹鐟版尒鐠囷拷
鐢牐绁幏娑樺珯鐢牐绁幏娑樺珯