pmsl 发表于 2008-6-3 21:37

一个很奇怪的困扰好长时间的问题(关于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 编辑 ]

花如月 发表于 2008-6-3 22:23

估计是数据类型引起的,可能是逻辑判断不严密

pmsl 发表于 2008-6-4 08:58

我也觉得是判断逻辑有问题,可是又找不出问题,大家帮忙看看逻辑判断问题在哪?y1, y2分别是alfa_f和alfa_r的分段函数,如图所示,仅给出y1-alfa_f的关系,y2类似

sigma665 发表于 2008-6-4 09:51

-0.1<alfa_r<0.1

这种表达式,matlab 不认

pmsl 发表于 2008-6-4 09:54

感谢sigma665的提示
-0.1<alfa_r<0.1matlab不认,哪应该怎么写呢,?还是没弄好,急:@L

问题解决了,非常感谢sigma665朋友的建议:handshake

[ 本帖最后由 ChaChing 于 2010-8-10 21:12 编辑 ]

sigma665 发表于 2008-6-4 14:09

-0.1<alfa_r   && alfa_r<0.1
分开写即可

[ 本帖最后由 ChaChing 于 2010-8-11 00:45 编辑 ]
页: [1]
查看完整版本: 一个很奇怪的困扰好长时间的问题(关于if语句)