声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 794|回复: 4

[编程技巧] 请教下如何使程序运行加快?

[复制链接]
发表于 2008-4-22 09:32 | 显示全部楼层 |阅读模式

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

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

x
下面是我编的程序,其中,car_mass1是1751541行,3列的数据。mass_2_2也一样。在运行第二个循环的时候,i每行进1,要花费6分钟,我的i是从1~180的,那么要花费18个小时,大家谁能帮我看下如何让他快一点。谢谢了!
load car_mass1; load density_2_2 mass_2_2
G=6.67259*10^(-11); M=mass_2_2(:,1); MASS_XYZ=car_mass1;
clear car_mass1 mass_2_2

lat=0.5:1:179.5; lon=0.5:1:359.5;
n=length(lat); m=length(lon); r=6390000;  % 地表球半径

x_ball=zeros(n,m); y_ball=zeros(n,m); z_ball=zeros(n,m);
for i=11:n, for j=1:m
     x_ball(i,j)=r*sin(lat(i))*cos(lon(j)); y_ball(i,j)=r*sin(lat(i))*sin(lon(j)); z_ball(i,j)=r*cos(lat(i));
end; end

temp1=zeros(1751541,1); temp2=zeros(1751541,1); mass_gravity=zeros(180,360);
for i=1:n, for j=1:m
     temp1=(MASS_XYZ(:,1)-x_ball(i,j)).^2+(MASS_XYZ(:,2)-y_ball(i,j)).^2+(MASS_XYZ(:,3)-z_ball(i,j)).^2;
     temp2=M./sqrt(temp1); mass_gravity(i,j)=G*sum(temp2); j
end; end

[ 本帖最后由 ChaChing 于 2010-1-12 09:17 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-4-22 09:39 | 显示全部楼层
本版建议不要催贴,另外,初到本版建议先看看本版置顶帖,这将对于讨论的效果有帮助——还有就是可能很多问题在置顶帖里都能找到答案,比发帖等别人回答来的更快。
发表于 2008-4-22 09:56 | 显示全部楼层
原帖由 sogooda 于 2008-4-22 09:39 发表
本版建议不要催贴,另外,初到本版建议先看看本版置顶帖,这将对于讨论的效果有帮助——还有就是可能很多问题在置顶帖里都能找到答案,比发帖等别人回答来的更快。
初来论坛不看置顶帖就发帖的人,就相当于拿到课本后不看目录直接翻书一样,效率自然低
 楼主| 发表于 2008-4-22 10:31 | 显示全部楼层
我是有点不清楚规则,楼上的也不必挖苦人吧。
发表于 2008-4-22 10:37 | 显示全部楼层
原帖由 heaventian 于 2008-4-22 10:31 发表
我是有点不清楚规则,楼上的也不必挖苦人吧。
没有挖苦的意思,更多的是无奈,建议看看 [原创]把自己真正的“从一个提问者变成一个动手者”这个帖子
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-12 08:07 , Processed in 0.076721 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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