高手帮忙优化程序
下面的程序,在设定循环次数比较小的情况下,运行速度还可以,次数多的时候就非常的慢。请问这程序是否可以改进。多谢。
目的是记录下满足特定结论(迭代结果)的各参数取值情况
kk=[];
ss=[];
hh=[];
是参数的记录情况
plot是判定条件,看能否出现想要的结果
目的不是画图,而是记录k,s,h的取值情况,plot是提示出现想要的结论
clear all
clc
format long;
xxx1=[];
xxx2=[];
kk=[];
ss=[];
hh=[];
for k=1:2:19
for s=1:1:6
for h=1.5:0.1:3.6
XX1=[];
XX2=[];
x1(1)=0.5;
x2(1)=0.7;
for t=1:10
x1(t+1)=h*x1(t)+s*sin(k*(x2(t)));
x2(t+1)=h*x2(t)+s*cos(k*(x1(t)));
XX1=;
XX2=;
end
xxx1=;
xxx2=;
if abs(x1(10)-219.02)<1e-2&&abs(x2(10)-79.669)<1e-2 %%% 此时k=5;s=3;h=1.8;
plot(x1(10),x2(10),'o');
kk=;
ss=;
hh=;
xxx1=;
xxx2=;
end
end
end
end
[ 本帖最后由 pleaseopen 于 2006-11-23 13:51 编辑 ]
回复
不明白你为何一直坚持要画那个点.请稍微描述一下你想实现什么吧. 我的做法是:既然已经给出
kk=[];
ss=[];
hh=[];
那么那三个for就可以不要,过多的循环使程序有点臃肿
因为不知道你
kk=[];
ss=[];
hh=[];
三个数组的数据什么样的,所以不敢确定,个人愚见
回复
没有听懂你说的.你说说想实现什么吧. 想画什么图形?
[ 本帖最后由 xjzuo 于 2006-11-21 11:05 编辑 ] 原帖由 pleaseopen 于 2006-11-21 10:16 发表
下面的程序,在设定循环次数比较小的情况下,运行速度还可以,次数多的时候就非常的慢。请问
这程序是否可以改进。多谢。
clear all
clc
format long;
xxx1=[];
xxx2=[];
kk=[];
ss=[];
hh=[];
for k=1 ...
4层循环,不慢才怪,呵呵 目的是记录下满足特定结论(迭代结果)的各参数取值情况
kk=[];
ss=[];
hh=[];
是参数的记录情况
plot是判定条件,看能否出现想要的结果 原帖由 xjzuo 于 2006-11-21 11:00 发表
没有听懂你说的.
你说说想实现什么吧. 想画什么图形?
目的不是画图,而是记录k,s,h的取值情况,plot是提示出现想要的结论 原帖由 pleaseopen 于 2006-11-21 11:17 发表
目的是记录下满足特定结论(迭代结果)的各参数取值情况
kk=[];
ss=[];
hh=[];
是参数的记录情况
plot是判定条件,看能否出现想要的结果
就是啊,你既然给出参数的记录情况,就根据这个记录走就是了,还用那三个for干吗? 原帖由 F117_ren_0 于 2006-11-21 18:59 发表
就是啊,你既然给出参数的记录情况,就根据这个记录走就是了,还用那三个for干吗?
这只是一个例子,关键在于用来寻找参数,不是像你想得就为了那三个参数
回复
三个参量直接取为向量,去掉循环,可加快速度.另:请把问题一次说清楚些,这样别人就会知道你想要做什么了. 原帖由 xjzuo 于 2006-11-22 20:05 发表
三个参量直接取为向量,去掉循环,可加快速度.
另:请把问题一次说清楚些,这样别人就会知道你想要做什么了.
请指点如何具体实现,确实没有经验 你这个程序看着头晕
举一个简单的例子吧
for i=1:10
z(i)=i+i*exp(i);
end
这个你就可以写成向量运算的形式
i=1:10;
z=i+i.*exp(i);
页:
[1]