如何保存局部变量(在被调用的函数中)

4次浏览(最近30天)
伊利亚斯Bouchkira
伊利亚斯Bouchkira 2021年8月18日
编辑: 斯蒂芬。 2021年8月18日
亲爱的所有,
我使用下面的脚本来解决ode,然而,有一些变量(在函数@ODE_System内计算),我想看到和保存他们的值与解决方案;万博 尤文图斯
有办法做到吗,提前感谢你这么多;
%这是使用ODE15s解决模型的脚本
tspan = (0:1);
2.4 e-12 initial_moments =[20日,3 e-12 1.2737 e-13];
[tsol,时刻]= ode15s (@ODE_System、tspan initial_moments);

答复(2)

我J
我J 2021年8月18日
编辑:我J 2021年8月18日
我不知道这样做有什么用。但是根据你的需要,你可以这样做:
作用dydt = vdp1 (t, y)
计算mu = 1时的范德堡尔ode
%参见ODE113, ODE23, ODE45。
亚采克·基尔赞卡和劳伦斯·f·沙宾
版权所有1984-2014 The MathWorks, Inc.
dydt = [y (2);(1 y (1) ^ 2) * y (2) - y (1)];
保存(“t”+字符串(t)+“.mat”“dydt”%添加需要保存的变量
然后
[t,y] = ode45(@vdp1,[0 20],[2;0]);

斯蒂芬。
斯蒂芬。 2021年8月18日
编辑:斯蒂芬。 2021年8月18日
"...有一些变量(在函数@ODE_System内计算),我想看到和保存他们的值与解决方案;万博 尤文图斯有没有办法做到这一点?”
有很多方法可以做到这一点,但它们不太可能对您有很大帮助,因为只有一些函数调用对应于ODE解算器返回的解决方案。这是因为ODE解算器可以任意更改步长,甚至可以进行后退,并且并非所有函数调用都对应于输出值。所以,如果你只是简单地保存万博 尤文图斯 每一个 值计算 每一个 函数调用时,要计算出它们中哪一个实际对应于ODE求解器返回的有效解值并不是一项简单的任务。万博 尤文图斯我不推荐这种方法。
除非求解ODE函数是 那么到目前为止,最简单的方法是先解ODE,然后用解值调用函数来获得中间值。
下面是一个工作示例:
[t、y] =数值(@fun、0:9 [2;0])
t= 10×1
1 2 3 4 5 6 7 8 9
y = 10×2
2.0000 0 1.5081 -0.7803 0.3231 -1.8334 -1.8699 -1.0310 -1.7461 0.6240 -0.8443 1.3007 1.2669 2.4471 1.9322 -0.4298 1.2329 -0.9745 -0.3645 -2.4967
(~, tmp) = cellfun (@fun num2cell (t) num2cell (y, 2),“大学”,0);%或使用循环。
I=cell2mat(tmp)
我= 10×1
-2.0000 -0.5137 -1.9651 4.4439 0.4675 1.2178 -2.7478 -0.7574 -0.7261 -1.8004
作用[dydt, intv] =乐趣(t, y)%所有需要的中间值作为输出。
intv = (1 y (1) ^ 2) * y (2) - y (1);
dydt = [y (2); intv];
结束

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始打猎吧!