查看: 2066  |  回复: 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个字符以上)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 课题和专业一点都不相关怎么办 +6 imt4n9 2024-11-11 9/450 2024-11-14 23:26 by 灰太狼吃不到羊
[教师之家] 大学老师 +9 考研一路顺风 2024-11-13 11/550 2024-11-14 21:47 by EndNoted
[论文投稿] OE返修遇到expired +3 隔壁老王来了 2024-11-14 7/350 2024-11-14 20:46 by 隔壁老王来了
[硕博家园] 和导师撕破脸了 +15 圆满123456 2024-11-13 19/950 2024-11-14 19:10 by yudaoqian88
[基金申请] 广东省自然科学基金-面上项目消息有了么? +4 pachang 2024-11-14 5/250 2024-11-14 16:41 by owenyaa
[基金申请] 博后资助名单出来了 +10 Shxjjxjkx 2024-11-14 12/600 2024-11-14 16:07 by Vincent1900
[找工作] 咨询一下江西的高校待遇,人文氛围怎么样? +5 akslis2024 2024-11-09 5/250 2024-11-14 13:53 by 啄木鸟、
[基金申请] 76批博后基金 +3 feiyi3986 2024-11-14 3/150 2024-11-14 11:50 by puly
[基金申请] 第76批博士后面上大概什么时间公示 +6 探际者 2024-11-11 7/350 2024-11-14 10:06 by Foxicut88
[硕博家园] 实验进度 +8 麻辣烫。 2024-11-11 13/650 2024-11-13 23:25 by 麻辣烫。
[论文投稿] 找不到审稿人 +4 吉祥如意141913 2024-11-13 4/200 2024-11-13 16:33 by 13333105938
[硕博家园] 如何看清华北大硕博的毕业论文 +6 2025lucky 2024-11-10 6/300 2024-11-12 22:46 by 楚扬长流
[论文投稿] 投稿求助 40+3 liukun11 2024-11-12 4/200 2024-11-12 19:13 by liukun11
[论文投稿] 论文接受后,编辑部发邮件提醒缺少附件 15+4 上善若水明泪 2024-11-10 4/200 2024-11-12 14:24 by 北京莱茵润色
[基金申请] 请问:工作单位缺乏条件,青年基金申报书可以写读博学校的实验平台吗? +5 dxmx 2024-11-08 7/350 2024-11-11 23:08 by dxcharlary
[硕博家园] 同步辐射 +4 小张要加油努力 2024-11-10 7/350 2024-11-11 13:47 by mpdfwxgui
[基金申请] 四川基金项目状态 +3 doctor廴 2024-11-08 7/350 2024-11-11 11:34 by 20094958
[考博] 985硕 电池方向考博 +3 物化w7wx 2024-11-08 5/250 2024-11-11 09:38 by 物化w7wx
[论文投稿] renewable energy 添加作者 15+3 Hebauwww12 2024-11-09 4/200 2024-11-11 08:42 by 北京莱茵润色
[基金申请] 要求论文发表日期在项目执行期内,论文发表日期是在线日期还是见刊日期 +6 Jiangnanyu1 2024-11-09 7/350 2024-11-10 17:49 by jurkat.1640
信息提示
请填处理意见