问题和我的嵌套循环,永远

2视图(30天)
瑟瑞娜Solanki
瑟瑞娜Solanki 2018年2月23日
评论道: Stephen23 2018年2月24日
嗨,所有
不幸的是,我有一些问题和我的嵌套循环。从根本上工作区中的输出显示,我得到的输出正确的尺寸。但是我永远循环正在运行,经常我不得不取消它——它接管40分钟! !它不应该这么长时间,我想知道我的循环逻辑是不正确的。
我试过很多事情,比如改变指数和一些计算的顺序。
总体我计算一个矩阵就是一个2 * 2矩阵和包含变量。我有40集的计算这2 * 2矩阵并希望保存到一个数组中。
然后我用RK4循环计算位移加速度和找到峰值位移。所以我想要40个不同的峰值位移与我相关状态2 * 2矩阵。
我的逻辑有什么毛病?因为它不是输出这永远和正在运行。
提前谢谢! !
dt_interp = 0.0001;
t_interp = dt_interp: dt_interp: tf;
ft_interp = F_interp (t,英国《金融时报》,t_interp);
NPTS_interp =大小(t_interp, 2);
欧美= 0 (2,NPTS_interp);
T0 = 0.1:0.1:4;
i = 1:(NPTS_interp-1);
w =(2 *π)/ T0;
w2 = w * w;
思蒂= 0.05;
m = 773;
A1 = [0 1;w2 -(2 *思蒂* w)];
一个= A1 (:,);
b = [0
1 / m];
g1 =(:,:) *欧美(:,我)+ b * ft_interp(我);
g2 =(:,:) *(欧美(:,i) + 0.5 * g1 * dt_interp) + 0.5 * b * (ft_interp(我)+ ft_interp (i + 1));
g3 =(:,:) *(欧美(:,i) + 0.5 * g2 * dt_interp) + 0.5 * b * (ft_interp(我)+ ft_interp (i + 1));
g4 =(:,:) *(欧美(:,我)+ g3 * dt_interp) + b * ft_interp (i + 1);
ynew =欧美(:,我)+ (g1 + g2 + g3 + g4) * dt_interp / 6;
(:,i + 1) = ynew;
:ut =次(1);
vt =次(2:);
Sd_max (T0) = max (ut);
结束
结束
:Maximum_displacement = Sd_max (1);
图(1)
情节(T0, Maximum_displacement);
网格
网格
包含(“时间(s)”);
ylabel (“峰值位移(m)”);
标题(“对地震反应谱1”);
函数一个= F_interp(时间、F t)
一个= interp1(时间、F t);
结束
3评论
Stephen23
Stephen23 2018年2月24日
@Serena Solanki:那是真的您正在运行的代码吗?显然你使用分数值作为指标,我以前从来没见过那项工作:
T0 = 0.1:0.1:4;
我=
Sd_max (T0) = max (ut);
结束
结束
“有什么方法我可以拯救我的A -矩阵数据到一个数组中?”
当然,preallocate正确大小的数组,然后使用索引。当你不能真正说明算法和上面的代码有错误,我不确定你需要做出什么改变。

登录置评。

答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!