24小时热门版块排行榜    

查看: 1811  |  回复: 5

shenjianbiao

新虫 (小有名气)

[求助] matlab使用ode15s计算导致out of memory,请大神指点如何解决 已有2人参与

在用matlab里的ode15s对一个微分方程组进行计算时,由于时间步长要求较小(0.0001),而计算的时间又比较长(30),从而导致ode15s返回的矩阵数据量过大(300000*500),从而导致“out of memery”的错误,请问大神有什么解决方法吗?
其实我并不需要每个时间步的数据都存储起来,只需要其中一些特殊时刻的数值便足以,有什么办法可以释放掉不需要的数据内存呢?

[ Last edited by shenjianbiao on 2014-1-27 at 16:45 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cobrasq

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
shenjianbiao(xzhdty代发): 金币+1, 谢谢参与 2014-02-01 16:07:38
shenjianbiao: 金币+9, ★★★★★最佳答案, 哦,是我看错了,不好意思哈,只剩9个了 2014-02-02 12:34:36
先设置OutputFcn,然后在调用ode15s时,用包含options的格式。
options = odeset('OutputFcn', @myfun)
在自定义的myfun中clear不需要的内存。

» 本帖已获得的红花(最新10朵)

2楼2014-01-31 12:01:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shenjianbiao

新虫 (小有名气)

送红花一朵
引用回帖:
2楼: Originally posted by cobrasq at 2014-01-31 12:01:33
先设置OutputFcn,然后在调用ode15s时,用包含options的格式。
options = odeset('OutputFcn', @myfun)
在自定义的myfun中clear不需要的内存。

您好,首先感谢您的回复,我还是有些疑虑,比如我的代码是这样的:[t,h]=ode15s(@h_fun,tspan,h0,options),我想清除的是函数的返回值h矩阵里面的元素,这个也可以吗?清除别的变量肯定是没有问题,但是这个是函数返回值,也可以清除其内存吗?
3楼2014-01-31 15:10:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cobrasq

金虫 (小有名气)


jjdg: 金币+1, 春节快乐 2014-02-02 09:47:39
引用回帖:
3楼: Originally posted by shenjianbiao at 2014-01-31 15:10:26
您好,首先感谢您的回复,我还是有些疑虑,比如我的代码是这样的:=ode15s(@h_fun,tspan,h0,options),我想清除的是函数的返回值h矩阵里面的元素,这个也可以吗?清除别的变量肯定是没有问题,但是这个是函数返回值 ...

可以再对 OutputSel 进行设置以制定输出内容。

options = odeset('OutputFcn',@myfun,'OutputSel',[1 3]);
4楼2014-01-31 22:35:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ruopengwang

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
shenjianbiao: 金币+20, ★★★★★最佳答案, 多谢您了大侠,我去试试 2014-02-01 11:40:00
xzhdty: 金币+1, 谢谢参与 2014-02-01 16:07:48
对,如上所述!也可以利用optset设置!
学习与交流
5楼2014-02-01 06:10:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cobrasq

金虫 (小有名气)

jjdg: 春节快乐,你pm楼主确认一下 2014-02-02 09:49:10
楼主金币给错人了吧?
6楼2014-02-01 23:32:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 shenjianbiao 的主题更新
信息提示
请填处理意见