本帖最后由 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 语句在这里的应用,可扩展性差,难维护。不知道各位大神有没有更好的方法。恳请分享
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
不好意思,不是这样,Dodata的数据是我随便写的,为了方便。
一周热门 更多>