声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1503|回复: 3

[编程技巧] 这个程序运行时间太长求助

[复制链接]
发表于 2011-5-24 11:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 煜宸0922 于 2011-5-24 11:35 编辑

各位大侠,这个程序运行时间太长,各位还有什么办法优化一下?
function [T,x,V]=changerk344(N)
x(:,1)=[0;0;0;0];      % 初始状态
h=0.01;                % 初始步长,最大步长
AbsTol=1e-5;         % 容差
p=4;                        
T=zeros(1,N);          % 时间向量
T(1,1)=0;              % 时间起点
p21=2^p-1;
V =[];
tic
for i=1:N-1
     if abs(x(1,i))<0.09             % 定步长
        h=0.01;       % 固定步长
        x(:,i+1)=rk144(x(:,i),h,T(i));
        T(1,i+1) = T(1,i) + h;          % 更新时间
    else                                 % 变步长
        x1=rk144(x(:,i),h,T(1,i));
        x2=rk144(x(:,i),h/2,T(1,i));
        a=abs(x1-x2)/p21;
        while a(1,1)> AbsTol                % 选择合适步长
            h=h/10;
            x1=rk144(x(:,i),h,T(1,i));
            x2=rk144(x(:,i),h/2,T(1,i));
            a=abs(x1-x2)/p21;
        end
        x(:,i+1)=rk144(x(:,i),h,T(i));      % 根据选择的步长更新状态
      if   abs(x(1,i+1))>=0.1   
           V=x(3,i+1);
           x(3,i+1)=-0.8*x(3,i+1);
           x(1,i+1)=sign(x(1,i+1))*min(0.1,abs(x(1,i+1)));
      end
        T(1,i+1) = T(1,i) + h;   
      end
     h=0.01;
end
toc
T = T(:);   
x = x(:,1:N);
回复
分享到:

使用道具 举报

发表于 2011-5-24 22:51 | 显示全部楼层
自己看看老帖吧, 收穫较多!!
1.[原创] 提高matlab运行速度的一点心得 http://forum.vibunion.com/thread-25305-1-1.html
  [原创] 提高matlab运行速度的一点心得(之二) http://forum.vibunion.com/thread-26449-1-1.html
  [原创]提高matlab运行速度和节省空间的一点心得(之三) http://forum.vibunion.com/thread-33199-1-1.html
2.matlab矢量化编程技巧集锦 http://forum.vibunion.com/thread-41583-1-1.html
from http://forum.vibunion.com/home-s ... -blog-id-18250.html
发表于 2011-5-29 18:26 | 显示全部楼层
本帖最后由 zhouyang664 于 2011-5-29 18:41 编辑

用profile分析一下!

真伤感情,相帮楼主试试,缺函数呢:rk144,这又是何方神圣啊?

评分

1

查看全部评分

发表于 2011-6-4 10:15 | 显示全部楼层
你这里面循环挺多的,没有发挥MATLAB矩阵计算的优势。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-25 15:54 , Processed in 0.057329 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表