竹语随风 发表于 2013-12-10 10:58

关于f没有定义的问题

clear all
c=0.1;
w=0.5;
k=0.1;
alfa=pi/6;
phi0=0;
beta=0;
x0=;
options=odeset;options.RelTol=1e-4;
=ode45(@crackandliner,,x0,options,c,w);
theta=w*t+phi0+beta-fphi(x(3),x(1));
n=sin(theta+fphi(x(3),x(1)));
m=cos(theta+fphi(x(3),x(1)));
theta=mod(theta+2*pi,2*pi);
if theta>=3*pi/2+alfa
    theta=theta-2*pi;
end
if (theta>=-pi/2+alfa) & (theta<=pi/2-alfa)
    f=1;
elseif (theta>pi/2-alfa) & (theta<=pi/2+alfa)
    f=1/2*;
elseif (theta>pi/2+alfa) & (theta<=3*pi/2-alfa)
    f=0;
elseif (theta>3*pi/2-alfa) & (theta<=3*pi/2+alfa)
    f=1/2*;
end
aa=f*k*m.^2*x(1)+f*k*n.*m.*x(3);
ezplot(aa);

错误提示
??? Undefined function or variable "f".
Error in ==> Untitled5 at 27aa=f*k*m.^2*x(1)+f*k*n.*m.*x(3);

问题就处在变量f处,之前没有f的时候程序能够正常运行

hustxyong 发表于 2013-12-10 13:53

如果
if (theta>=-pi/2+alfa) & (theta<=pi/2-alfa)
    f=1;
elseif (theta>pi/2-alfa) & (theta<=pi/2+alfa)
    f=1/2*;
elseif (theta>pi/2+alfa) & (theta<=3*pi/2-alfa)
    f=0;
elseif (theta>3*pi/2-alfa) & (theta<=3*pi/2+alfa)
    f=1/2*;
end
这些判断语句都不满足,里面的语句都不会执行,那么f自然没有被定义。
看看你的判断条件是不是漏了某些可能出现的情况没有考虑

牛小贱 发表于 2013-12-10 16:10

楼上说的对啊 楼主没有theta<-pi/2+alfa这种情况啊!假如,遇到这种判别条件,里面的语句都不会执行,那么f自然没有被定义了。{:{26}:}

ChaChing 发表于 2013-12-10 21:38

1.应该同个议题吧! http://forum.vibunion.com/thread-128402-1-1.html 难怪眼熟
2.感觉没必要发新帖
3.不知是否隔太久了!? 个人有些懒的细究
4.直觉LZ可能不小心犯同一个失误

竹语随风 发表于 2013-12-11 11:31

本帖最后由 竹语随风 于 2013-12-11 11:35 编辑

老师们,你们好,我程序中间的f是裂纹的综合模型,大家帮我看看有什么地方出错了,我在这里已经停留了很久了。我感觉也没有什么错误啊theta=mod(theta+2*pi,2*pi);将theta限定在了0-2pi之间,if theta>=3*pi/2+alfa    theta=theta-2*pi;
end将超出的部分进行转化到范围之内。

牛小贱 发表于 2013-12-11 15:46

竹语随风 发表于 2013-12-11 11:31 static/image/common/back.gif
老师们,你们好,我程序中间的f是裂纹的综合模型,大家帮我看看有什么地方出错了,我在这里已经停留了很久了 ...

楼主,你的crackandliner是自己定义的话,贴出来吧,我们运行一下。还有,楼主这么长时间了,没有调试出来,确实有点烦啊{:{04}:}

沧海一声笑 发表于 2013-12-12 11:27

同求,同求
页: [1]
查看完整版本: 关于f没有定义的问题