首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从函数调用术语时出现问题

从函数调用术语时出现问题
EN

Stack Overflow用户
提问于 2021-03-11 00:28:34
回答 1查看 31关注 0票数 0

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

代码语言:javascript
运行
复制
Undefined function or variable 'phi'.

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

用我的(缩短的)代码来解释可能更好:

代码语言:javascript
运行
复制
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(:,6).*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,y,I11,I22,I33,Mx,My,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‘变量的地方,它是类似的,但是没有错误。

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

感谢您的帮助,谢谢。

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

代码语言:javascript
运行
复制
Undefined function or variable 'phi'.

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

回答 1

Stack Overflow用户

发布于 2021-03-11 10:32:48

我在一个不是Stack Overflow的同事的帮助下找到了解决方案。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66568956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档