if 或 if else 语句在曲线拟合中的应用

2019-07-21 04:59发布

本帖最后由 wjfhsym 于 2016-6-7 11:11 编辑

在做传感器输出电压与待测要素浓度曲线拟合时,通常会用到 ,IF ,   IF (...,return) ,IF  ELSE语句。
举例如下,一款传感器输出是电压信号,需要自己拟合出浓度曲线,,其中  Voldata是传感器输出电压,Dodata是浓度。

     例1. 功能可以实现,但满足其中一个IF 语句后,仍然会对 下面的IF进行判断,耗时。
           if(Voldata<=3200)Dodata=1;
          if((Voldata>3200)&&Voldata<=3300)Dodata=2;
         if((Voldata>3300)&&Voldata<=3400)Dodata=3;
         if((Voldata>3400)&&Voldata<=3500)Dodata=4;
         if((Voldata>3500)&&Voldata<=3600)Dodata=5;
         if((Voldata>3600)&&Voldata<=3700)Dodata=6;
         if((Voldata>3700)&&Voldata<=3800)Dodata=7;
         if((Voldata>3800)&&Voldata<=3900)Dodata=8;
        if(Voldata>3900)     Dodata=0;
            例2 功能可以实现,满足其中一个IF 语句后,立即返回
           if(Voldata<=3200) {Dodata=1;return; }
          if((Voldata>3200)&&Voldata<=3300){Dodata=2;return; }
         if((Voldata>3300)&&Voldata<=3400){Dodata=3;return; }
         if((Voldata>3400)&&Voldata<=3500){Dodata=4;return; }
         if((Voldata>3500)&&Voldata<=3600){Dodata=5;return; }
         if((Voldata>3600)&&Voldata<=3700){Dodata=6;return; }
         if((Voldata>3700)&&Voldata<=3800){Dodata=7;return;}
         if((Voldata>3800)&&Voldata<=3900){Dodata=8;return; }
         if(Voldata>3900){Dodata=0;return; }
      例3.  功能可以实现,满足其中之一IF ELSEIF 后,停止。
          if(Voldata<=3200)Dodata=1;
        else if(Voldata<=3300)Dodata=2;
        else if(Voldata<=3400)Dodata=3;
        else if(Voldata<=3500)Dodata=4;
        else if(Voldata<=3600)Dodata=5;
        else if(Voldata<=3700)Dodata=6;
        else if(Voldata<=3800)Dodata=7;
        else if(Voldata<=3900)Dodata=8;
       else Dodata=0;


  总感觉上面的都是笨方法,若数据分段太多时,就崩溃了。IF ELSE 对应嵌套 以及SWITCH 语句在这里的应用,可扩展性差,难维护。不知道各位大神有没有更好的方法。恳请分享

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。