存储变量后循环(容易)

11视图(30天)
保罗•罗杰斯
保罗•罗杰斯 2021年1月8日
嗨,我设法使一个循环中运行一个函数。
预期的输出是:
t、y (: 1), y (:, 2)
问题是在迭代结束时我只有最后一个循环的一部分,但是
我将男孩的所有数据,对那些向量,在looop计算。
这是部分代码:
i = 1:(长度(giri) 2)
U1 (i) = (D1 *π。*义理(我))/ 60;
U2 (i) = (D2 *π。*义理(我))/ 60;
B (i) = U1 (i)。/ (2。* wh。* Lc);
[t、y] = ode113 (@greitzer (t0(我),特遣部队(i)], [y1 (i), y2 (i)],选项,U1 (i), U2 (i), B (i));%我发现ode113方式更有效率
t0 (i + 1) = time_rpm (i + 1);%仿真开始[s]
特遣部队(i + 1) = time_rpm (+ 2);%模拟完成的[s]
日元(i + 1) = y(结束,1);%初始条件1
y2 (i + 1) = y (, 2);%初始条件2
情节(t、y (:, 2))
网格
网格
包含(“t [s]”)
ylabel (“\ψ”)
持有
结束
我想叫:
t =时间
y(: 1) =φ
y (:, 2) = psi
8的评论
保罗•罗杰斯
保罗•罗杰斯 2021年1月11日
noope,贴一个新的答案,而不是第一个留言,或者我不会接受按钮

登录置评。

答案(1)

瑞安Fedeli
瑞安Fedeli 2021年1月8日
这个例子是简化,但为了节省值从每个循环迭代,所有你需要做的就是将其保存到一个数组中。星号的线条是重要的部分:
z = linspace(1、50岁,10);%任意的向量
b = z;例如函数%任意值
array_val = 0(1、长度(z));% preallocate数组循环速度* * *
i = 1:长度(z)
a = b(我)* 1.1;%示例函数来创建数据
array_val (i) =一个;%保存价值从这个迭代到一个数组中* * *
结束
disp (array_val)
但如果“a”在这个例子不是一个单一的值,而是一个数组本身,需要将其保存到一个矩阵。在这种情况下,它会看起来像:
array_val = 0(长度(z));% 1)preallocate *矩阵* 0,长度(z)的长度(z)的大小。
% 2)你需要找出这些维度应该是什么。
% 3)这条线是有用的循环运行得更快,但这不是必要的
i = 1:长度(z)
a = b (i)。* z;%的例子函数来创建一个行向量的数据(的数据)
array_val (:, i) =一个;%保存数据的行向量矩阵的第i个位置
结束
disp (array_val)
array_val现在是一个矩阵,每一行数据的i迭代循环
我希望这有助于
1评论
保罗•罗杰斯
保罗•罗杰斯 2021年1月8日
我想跟随你的脑袋,但在你的情况下你也知道会有相同的长度z, infacct我得到一个下标赋值尺寸不匹配。
在我的例子中,我不知道多少分ode发出使用步骤。

登录置评。

s manbetx 845


释放

R2014b

社区寻宝

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

开始狩猎!