一个很奇怪的困扰好长时间的问题(关于if语句)
simulink搭建的仿真模块,fun模块为m函数,程序如下:function = fcn(alfa_f,alfa_r)
if (alfa_f>=0.14)&(alfa_r>=0.1)
y1=-342*alfa_f+7793;
y2=-864*alfa_r+6004;
elseif (alfa_f>=0.14)&(-0.1<alfa_r<0.1)
y1=-342*alfa_f+7793;
y2=59180*alfa_r;
elseif (alfa_f>=0.14)&(alfa_r<=-0.1)
y1=-342*alfa_f+7793;
y2=-864*alfa_r-6004;
elseif (-0.14<alfa_f<0.14)&(alfa_r>=0.1)
y1=55320*alfa_f;
y2=-864*alfa_r+6004;
elseif (-0.14<alfa_f<0.14)&(-0.1<alfa_r<0.1)
y1=55320*alfa_f;
y2=59180*alfa_r;
elseif (-0.14<alfa_f<0.14)&(alfa_r<=-0.1)
y1=55320*alfa_f;
y2=-864*alfa_r-6004;
elseif (alfa_f<=-0.14)&(alfa_r>=0.1)
y1=-342*alfa_f-7793;
y2=-864*alfa_r+6004;
elseif (alfa_f<=-0.14)&(-0.1<alfa_r<0.1)
y1=-342*alfa_f-7793;
y2=59180*alfa_r;
elseif (alfa_f<=-0.085)&( alfa_r<=-0.072)
else
y1=-342*alfa_f-7793;
y2=-864*alfa_r-6004;
end
输入alfa_f和alfa_r均为正弦曲线,输入曲线和输出y1,y2在图中都给出了,大家看看对吗??,怎么y1和y2负方向最大幅值能达到55000多??,正方向幅值还正常,负方向怎么会产生哪么大的值??
[ 本帖最后由 sigma665 于 2008-6-4 09:52 编辑 ] 估计是数据类型引起的,可能是逻辑判断不严密 我也觉得是判断逻辑有问题,可是又找不出问题,大家帮忙看看逻辑判断问题在哪?y1, y2分别是alfa_f和alfa_r的分段函数,如图所示,仅给出y1-alfa_f的关系,y2类似 -0.1<alfa_r<0.1
这种表达式,matlab 不认 感谢sigma665的提示
-0.1<alfa_r<0.1matlab不认,哪应该怎么写呢,?还是没弄好,急:@L
问题解决了,非常感谢sigma665朋友的建议:handshake
[ 本帖最后由 ChaChing 于 2010-8-10 21:12 编辑 ] -0.1<alfa_r && alfa_r<0.1
分开写即可
[ 本帖最后由 ChaChing 于 2010-8-11 00:45 编辑 ]
页:
[1]