问题如下:
有这样一个问题:x的取值范围为【0-1000】,我想进行这样的操作:将x分为20等份,在每一等分中y取不同的值。即,在x=【0-50】时,y=a;x=【50-100】时,y=b;。。。一直到x=【950-1000】时,y=z。
最先能想到的解决办法就是嵌套case,但是这要20个case,太复杂,有没有什么办法可以不用嵌套?比如公式节点里面输入C语言?但是这样的程序c语言我不知道该怎么编,哪位指教一下~急求啊~~~
条件结构是编程三大基本结构之一(顺序、条件、循环),使用非常广泛也极为灵活,但是过多的条件分支也往往令人头疼。对于使用过其它编程语言的朋友们,会自然想起IF ELSE,但是LABVIEW却没有这样的结构。
我曾经专门讨论过IF ELSE的问题,参见下面的链接:
http://eedemi.eefocus.com/csxcs366/blog/08-06/150471_62e84.html
有些特定情况,可以考虑用数组来替代CASE结构,针对上面的问题我给出了下面的解决方法:

Picture
因为X的取值范围是等间隔的,因此自然考虑到用数组取代CASE结构。
类似的问题是非常常见的,如果不是等间隔的,按照C语言的编程习惯,我会自然考虑到使用公式节点来解决这个问题。
在写这篇博文之前,我想到了另外一种适合LABVIEW的处理方法,因此我觉得应该写出来,供大家参考。
对于涉及到取值范围的问题,往往间隔虽然不相同,但是必须是连续的,一般按照升序排列的,因此是可能利用数组来解决的。
LABVIEW的数组操作极其方便,这个问题本身也可以归结到数组中,我们考虑这个问题需要两个数组:

1、取值范围的数组
 
Picture
假设X分成如下几段:0-5,5-11,11-24三段,多个范围时原理是相同的。

2、值数组

三段对应三个Y值,因此需要构建值数组。Y的类型可以任意的,比如数值、字符串等等,为了说明的更加清楚,我采用字符串数组。

Picture
三个字符串对应三段数值。
下面要考虑的问题是确定给定的X值到底位于那个段的问题了,幸运的是LABVIEW提供了这样的数组操作函数,不过一般用的不多,因此可能不熟悉,下面是帮助中的函数说明。
 
Picture
LABVIEW的中文帮助一向是晦涩难懂的,可能是美式中文,中国人不习惯
简单地说,给定一个值,该函数能够找出一个索引值,表明这个值所在的范围,这正是我们所需要的。

Picture
无论分成多少段,上面的程序框图都是适用的,需要修改的就是数组值的问题了,相对于使用CASE结构,肯定是简洁方便多了。
 
 


labview7i
02/26/2011 19:46

解决问题你是一流的!
关键是告诉我们那个VI的基本用法。

Reply



Leave a Reply.