如何从另一个函数中获取函数的输出?

时间:2014-12-25 09:46:21

标签: matlab function handle

我有一个函数Matrices,它给了我Along。我希望第一个函数的Along传递另一个函数MatricesElse作为参数。这段代码有错误,为什么?

function theOutput = Matrices()
    theOutput = Along;


    function MatricesElse(Along)
    disp(theInput);       % // Will print value of Along returned from first function,

syms teta q u w Se Sth v p r o Y SR SA s

% // Aircraft Equations of Longitudinal Motion
Ilong=[1 0 0 0;0 1 0 0; 0 1 0 0;0 0 0 1];
Xlong=[teta;q;u;w];
Ulong=[Se;Sth];
Xlong=(inv(s*Ilong-Along))*Blong*Ulong;
teta=Xlong(1,1)
q=Xlong(2,1)
u=Xlong(2,1)
w=Xlong(3,1)

% // Aircraft Equations of Lateral Motion
Ilat=[1 0 0 0 0;0 1 0 0 0;0 0 1 0 0;0 0 0 1 0;0 0 0 0 1];
Xlat=[v;p;r;o;Y];
Ulat=[SR;SA];
Xlat=(inv(s*I-Alat))*Blat*Ulong;
v=Xlat(1,1)
p=Xlat(2,1)
r=Xlat(3,1)
o=Xlat(4,1)
Y=Xlat(5,1)

end

1 个答案:

答案 0 :(得分:0)

简短说明:您试图在此函数之外调用函数Matrices()的私有变量,这就是它无法工作的原因。

此代码应该有效。请注意,名称CalcMatrix可能与theOutputAlong不同,但所有这些变量都具有相同的内容:

function main

CalcMatrix = Matrices()
MatricesElse(CalcMatrix)


function theOutput = Matrices()
theOutput = Along;


function MatricesElse(Along)
disp(theInput);       % // Will print value of Along returned from first function,

syms teta q u w Se Sth v p r o Y SR SA s

% // Aircraft Equations of Longitudinal Motion
Ilong=[1 0 0 0;0 1 0 0; 0 1 0 0;0 0 0 1];
Xlong=[teta;q;u;w];
Ulong=[Se;Sth];
Xlong=(inv(s*Ilong-Along))*Blong*Ulong;
teta=Xlong(1,1)
q=Xlong(2,1)
u=Xlong(2,1)
w=Xlong(3,1)

% // Aircraft Equations of Lateral Motion
Ilat=[1 0 0 0 0;0 1 0 0 0;0 0 1 0 0;0 0 0 1 0;0 0 0 0 1];
Xlat=[v;p;r;o;Y];
Ulat=[SR;SA];
Xlat=(inv(s*I-Alat))*Blat*Ulong;
v=Xlat(1,1)
p=Xlat(2,1)
r=Xlat(3,1)
o=Xlat(4,1)
Y=Xlat(5,1)