如何调用一个变量矩阵脚本从一个到另一个脚本

42视图(30天)
我有两个脚本。在第一个我将得到θ的名次和B矩阵如下所示。
信谊θ
一个= cos(θ)。* [1 5 6;
2 9 3;
5 1 0)
B = tan(2 *θ)。* [8 5 1;
0 1 6;
2 4 7]
我想用这些A和B矩阵在另一个脚本,这是下面
函数dydt = scriptname (t, y)
θ= y (3);%替代y(3)代替θ在A和B矩阵
一个%提取一个矩阵
B%提取B矩阵
V = [1;
5;
3]
dydt = V - Y ((A + B) *);
结束
最后,我将在另一个情节这些颂歌的脚本,我这里没有了。
我的主要疑问是如何提取A和B矩阵(尤其是那些变量矩阵)到另一个脚本。
提取这些A和B矩阵后我将替代y(3),这样我就可以摆脱θ。
我没显示确切的问题,因为它太复杂。关注我的主要疑问不关心值。
提前谢谢。

接受的答案

法比奥Freschi
法比奥Freschi 2021年9月7日
我不确定我有understtod正确你的问题。我试一试。
我将添加一个额外的层使用一个匿名函数来解决porblem A和B的函数
清晰的变量,关闭所有
A和B %匿名函数来计算
= @(θ)因为(θ)。* [1 5 6;2 9 3;5 1 0];
B = @(θ)谭(2 *θ)。* [8 5 1;0 1 6;2 4 7];
%的额外层通过A和B dydt函数
myfun = @ (t, y) scriptname (t, y, A, B);
% tspan假值和y0
tspan = [0 1];
y0 = [0;0;0);
% ode求解器
索尔=数值(myfun tspan, y0);
函数dydt = scriptname (t y, B)
θ= y (3);%替代y(3)代替θ在A和B矩阵
V = [1;5;3);
%的实际计算A和B的当前值θ
dydt = V -(((θ)+ B(θ))* y);
结束
18岁的评论

登录置评。

答案(1)

1月
1月 2021年9月7日
编辑:1月 2021年9月7日
第一个代码显示了一个“脚本”,第二个“功能”。而自动脚本与调用者分享自己的变量,函数不。据我了解你havt要做的是调用脚本:
%脚本文件:“yourScript.m”
信谊θ
一个= cos(θ)。* [1 5 6;
2 9 3;
5 1 0)
B = tan(2 *θ)。* [8 5 1;
0 1 6;
2 4 7]
%函数文件:“scriptname。m”(missleading名字!这不是一个脚本)。
函数dydt = scriptname (t, y)
θ= y (3);%替代y(3)代替θ在A和B矩阵
yourScript;% < - A和B是内部定义的
V = [1;
5;
3]
dydt = V - Y ((A + B) *);
结束
生产代码,脚本在你的膝盖,因为你不能直接看到,定义的变量。使用功能相反,提出变量显式:
%脚本文件:“yourFunction.m”
函数[A, B] = yourFunction ()
信谊θ
一个= cos(θ)。* [1 5 6;
2 9 3;
5 1 0)
B = tan(2 *θ)。* [8 5 1;
0 1 6;
2 4 7]
结束
%函数文件:“theOtherFunction.m”
函数dydt = theOtherFunction (t, y)
[A, B] = yourFunction ();
V = [1;
5;
3]
dydt = V - Y ((A + B) *);
结束
7评论

登录置评。

下载188bet金宝搏


释放

R2021a

社区寻宝

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

开始狩猎!