24小时热门版块排行榜    

查看: 656  |  回复: 1

zhouyufei

木虫 (小有名气)

[求助] 请问:matlab fsolve怎么清空fsolve占用的内存

请教一下,如下程序:
for ww=1:300
  fid=fopen('myfun.m','w');
  fprintf(fid,'function yy=myfun(xx)');
  fprintf(fid,char(13,10)');fprintf(fid,char(13,10)');
  fprintf(fid,strcat('yy(1)=',equ1,';'));
  fprintf(fid,char(13,10)');fprintf(fid,char(13,10)');
  fprintf(fid,strcat('yy(2)=',equ2,';'));
  fprintf(fid,char(13,10)');fprintf(fid,char(13,10)');
  fprintf(fid,strcat('yy(3)=',equ3,';'));
  fclose(fid);
[xw,fval] = fsolve(@myfun,[11;0.5;0.4]);
end

上述程序一次运行,数据结果不对;但是如果把循环体内的逐次拷贝到matlab运行,却是正确的。

应该是:
(1)每次建立的myfun.m来不及被后面的fsolve调用?或者fsolve一次调用,不再每次循环时,重新调用新的?
(2)首次fsolve调入myfun,以后不再重新调入myfun了,所以如果myfun内容改变了,那就不对了,用的还是以前的myfun。
(3)可能应该是没有及时清除内存,每次循环内存占用都在增加。clear是不行的,有没有其他方法啊?就是及时清空fsolve占用的内存
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhouyufei

木虫 (小有名气)

部分解决问题了:建立完myfun后,运行下rehash函数。这样每次循环myfun内容就更新了,计算结果正确。但是:
每次循环内存占用都在增加,每次循环占用内存大概增加6M,这个应该是fsolve占用的内存吧?导致计算会越来越慢,clear all是不行的,请问有没有解决方法啊?
2楼2015-01-13 20:10:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhouyufei 的主题更新
信息提示
请填处理意见