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 语句在这里的应用,可扩展性差,难维护。不知道各位大神有没有更好的方法。恳请分享

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
来俩不甜的
1楼-- · 2019-07-21 09:33
这不就是相当于取百位上的数吗。dodata = (voldata / 100) % 30
钩月黄昏
2楼-- · 2019-07-21 14:44
 精彩回答 2  元偷偷看……
wjfhsym
3楼-- · 2019-07-21 20:10
来俩不甜的 发表于 2016-6-7 13:30
这不就是相当于取百位上的数吗。dodata = (voldata / 100) % 30

不好意思,不是这样,Dodata的数据是我随便写的,为了方便。
来俩不甜的
4楼-- · 2019-07-21 23:21
wjfhsym 发表于 2016-6-7 14:05
不好意思,不是这样,Dodata的数据是我随便写的,为了方便。

就这么个意思,if else不好用就想办法做数学函数
long5313828
5楼-- · 2019-07-22 02:42
 精彩回答 2  元偷偷看……

一周热门 更多>