24小时热门版块排行榜    

查看: 2120  |  回复: 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个字符以上)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[教师之家] 高校教授是不是看不起企业的工程师? +7 akslis2024 2024-12-29 11/550 2024-12-30 00:12 by 雪径踏青
[硕博家园] 2025年秋季博士招生——氢能与燃料电池课题组 +5 dawnhf 2024-12-25 6/300 2024-12-29 22:42 by 北风微凉
[教师之家] 博士毕业后大多会和博导继续联系,是师恩难忘还是想用导师的资源? +9 akslis2024 2024-12-29 9/450 2024-12-29 21:40 by yangyuzhong4
[考博] 要不要加博导微信 +8 姑且随风而去 2024-12-24 17/850 2024-12-29 21:32 by plumplumgxc
[教师之家] 请问有在北京市属高校工作的老师吗?待遇一般怎么样的 +8 融合 2024-12-23 12/600 2024-12-29 21:23 by plumplumgxc
[教师之家] 浙大女生被MIT开除,女生称自己在浙江大学本科阶段就一直用这种方式收集数据发论文 +13 苏东坡二世 2024-12-27 13/650 2024-12-29 21:05 by plumplumgxc
[硕博家园] (常年有效)中外知名高校(QS排名前3)联培 - 招募大模型及强化学习博士生和博士后 +3 cowhorce 2024-12-29 3/150 2024-12-29 18:40 by 55bh@2u5
[基金申请] 个人感觉,国家基金越来越不资助基础研究了。 +5 kczhang 2024-12-28 5/250 2024-12-29 17:50 by THK1912
[教师之家] 离职 +15 Yyds55 2024-12-24 22/1100 2024-12-29 16:31 by willbuilder
[教师之家] [吃瓜]网传江苏某高校人事处处长被打 +12 Blues汪 2024-12-27 13/650 2024-12-29 13:13 by mapenggao
[论文投稿] 学位论文漏引了一篇文献,怎么办 20+7 青椒1234 2024-12-25 11/550 2024-12-29 11:07 by 前田庆次
[海外博后] 美国的华人副教授可以用中文交流吗 +3 啊哦呃咦呜吁 2024-12-28 3/150 2024-12-29 04:04 by Fenixknick
[考研] 化工,材料,环境,生物与医药专业研究生调剂 +5 h091807 2024-12-23 6/300 2024-12-28 20:27 by 09lg@5v2
[考博] 矿加博士报考 +4 阿斯蒂芬11234 2024-12-25 4/200 2024-12-28 14:46 by 跳鱼拨刺
[考研] 电子科技大学光电探测与传感研究团队研究生招生(接收调剂) +4 JacksLi 2024-12-24 9/450 2024-12-28 14:21 by JacksLi
[考研] 考研英语背单词 +4 Dicyw 2024-12-25 6/300 2024-12-28 10:54 by maolC
[考博] 2025博士申请 +4 Apple@888 2024-12-24 11/550 2024-12-27 16:23 by xmcxmcchem
[考研] 340求调剂本科985多科研经历 +3 白昭0927 2024-12-25 9/450 2024-12-27 13:25 by 白昭0927
[考博] 25年博士名额2名 +5 dochem 2024-12-26 5/250 2024-12-26 19:40 by nono2009
[论文投稿] 求助,要不要根据审稿人的要求引用他们的文献? 20+3 angel8533 2024-12-24 7/350 2024-12-24 22:32 by nono2009
信息提示
请填处理意见