从函数调用术语时遇到问题

问题描述

我有一个定义函数代码,然后我尝试在另一个表达式中使用我在该函数中定义的变量。当我这样做时,我收到一个错误

Undefined function or variable 'phi'.

我不确定为什么 phi 是未定义的,因为我在 if/else 语句中有它。

最好用我的(缩短的)代码来解释:

global I11 I22 I33 Mx My Mz w10 w20 w30 eps10 eps20 eps30 eps40...
       C110 C120 C130 C210 C220 C230 C310 C320 C330 IC K0

IC = [w10 w20 w30...
      eps10 eps20 eps30 eps40...
      C110 C120 C130 C210 C220 C230 C310 C320 C330];

opts  = odeset('RelTol',1*10^(-10),'AbsTol',1*10^(-10)); 
[t,y] = ode45(@(t,y) DynEqn2(t,y,I11,I22,I33,Mx,My,Mz),[ti tf],IC,opts);

N = sqrt(sum(y(:,4:7).^2,2));  


kap = acosd(1-2*y(:,5).^2-2*y(:,7).^2);

phi1 = acosd((2.*(y(:,4).*y(:,5)+y(:,6).*y(:,7)))/sind(kap));
phi2 = asind((2.*(y(:,4)-y(:,5).*y(:,7)))/sind(kap));

if phi1==phi2
    phi = phi1;
elseif phi1==180-phi2
    phi = phi1;
elseif -phi1==phi2
    phi = -phi1;
elseif -phi1==180-phi2
    phi = -phi1;
else
    disp('Something is wrong with phi')
end


figure (1)
plot(t,phi)

figure (2)
plot(t,kap)


function soln = DynEqn2(t,Mz)
w1 = y(1);
w2 = y(2);
w3 = y(3);

eps1 = y(4);
eps2 = y(5);
eps3 = y(6);
eps4 = y(7);

C11 = y(8);
C12 = y(9);
C13 = y(10);
C21 = y(11);
C22 = y(12);
C23 = y(13);
C31 = y(14);
C32 = y(15);
C33 = y(16);

w1_dot = (Mx - w2*w3*(I33-I22))/I11;
w2_dot = (My - w1*w3*(I11-I33))/I22;
w3_dot = (Mz - w1*w2*(I22-I11))/I33;

eps1_dot = .5*(w1*eps4-w2*eps3+w3*eps2);
eps2_dot = .5*(w1*eps3+w2*eps4-w3*eps1);
eps3_dot = .5*(-w1*eps2+w2*eps1+w3*eps4);
eps4_dot = -.5*(w1*eps1+w2*eps2+w3*eps3);

C11_dot = C12*w3-C13*w2;
C12_dot = C13*w1-C11*w3;
C13_dot = C11*w2-C12*w1;
C21_dot = C22*w3-C23*w2;
C22_dot = C23*w1-C21*w3;
C23_dot = C21*w2-C22*w1;
C31_dot = C32*w3-C33*w2;
C32_dot = C33*w1-C31*w3;
C33_dot = C31*w2-C32*w1;


soln = [w1_dot; w2_dot; w3_dot; ...
        eps1_dot; eps2_dot; eps3_dot; eps4_dot; ...
        C11_dot; C12_dot; C13_dot; C21_dot; C22_dot; C23_dot; C31_dot; C32_dot; C33_dot];

end

我计算 phi1、phi2 和 if/else 语句以找到 phi 的行是我正在努力解决的问题。

我确保函数中定义的变量有效,例如,在命令窗口中,我输入了“y(:,4)”并得到了正确的输出。但是每当我尝试在函数(即“phi1”)中使用它时,它都会反复输出错误的“90.0000”值,直到我停止它为止。

在我定义 'N' 变量的地方,它是类似的,但它可以正常工作而没有错误

有人知道如何修改这个问题吗?

感谢任何帮助,谢谢。

编辑:完整的错误信息如下:

Undefined function or variable 'phi'.

Error in HW6_Q1 (line 85)
plot(t,phi)

解决方法

我在一位非 Stack Overflow 同事的帮助下找到了我的解决方案。

我忘记了 ./,它把我的 phi 变成了一个矩阵,而不是我想要的向量。